我有一个看似简单的问题,但我还没有找到调试它的方法。
在我们生产网站的管理员中,当编辑具有用户外键的对象时,所有用户都显示为[email protected]。这使得管理员在这些区域无法使用!
我尝试用谷歌搜索这个问题,但由于“电子邮件保护”一词出现在许多邮件列表中的不相关上下文中,我找不到解决方案。另外,我在 Django 代码库中搜索了“电子邮件保护”,但没有找到。
知道该怎么做吗?
我真的不知道答案,但是每当我看到[电子邮件保护]出现在 Google 上时,如果我导航到链接,那么电子邮件就会出现,如果我检查它附近的元素,这段 javascript:
/* <![CDATA[ */
(function(){try{var s,a,i,j,r,c,l=document.getElementById("__cf_email__");a=l.className;if(a){s='';r=parseInt(a.substr(0,2),16);for(j=2;a.length-j;j+=2){c=parseInt(a.substr(j,2),16)^r;s+=String.fromCharCode(c);}s=document.createTextNode(s);l.parentNode.replaceChild(s,l);}}catch(e){}})();
/* ]]> */
这可能会进一步帮助您。(检查您的元素,看看这是否也适用于您。)
编辑:这似乎是由Cloudflare 的电子邮件混淆引起的。
电子邮件混淆对公共站点来说是件好事,我想为管理员禁用它。所以我编写了这个中间件来禁用管理员中的电子邮件混淆。
def _insert_email_off(html):
origin = html
try:
pos1 = html.index('>', html.index('<body')) + 1
html = html[:pos1] + '<!--email_off-->' + html[pos1:]
pos2 = html.index('</body>')
html = html[:pos2] +'<!--/email_off-->' + html[pos2:]
except ValueError:
return origin
return html
class CloudflareEmailProtect(MiddlewareMixin):
def process_response(self, request, response):
if request.path.startswith('/admin/'):
response.content = smart_bytes(_insert_email_off(smart_text(response.content)))
return response
class TestCloudflareEmailProtect:
def test_admin(self, rf):
request = rf.get('/admin/aaa')
html = '<html><body>content</body>'
response = CloudflareEmailProtect().process_response(request, HttpResponse(html))
assert b'<!--email_off--' in response.content
def test_not_admin(self, rf):
request = rf.get('/public')
html = '<html><body>content</body>'
response = CloudflareEmailProtect().process_response(request, HttpResponse(html))
assert b'<!--email_off--' not in response.content
def test_insert_email_off():
html = 'aa <body zzz>bb cc</body>dd'
result = _insert_email_off(html)
assert result == 'aa <body zzz><!--email_off-->bb cc<!--/email_off--></body>dd'
assert _insert_email_off('aaa') == 'aaa'
我也遇到了这个问题,浪费了很多次来解决。最后,我通过简单的添加解决了这个问题。
在 HTML 页面中添加
<!--email_off-->YOUR_EMAIL_ADDRESS<!--/email_off-->
该问题主要针对“Cloudflare 混淆电子邮件”。
从仪表板停用。
登录到 Cloudflare 仪表板。
确保选择了您要验证的网站。
单击刮盾应用程序。
在电子邮件地址混淆下,检查开关是否设置为开。