Django: [email protected] в admin - программирование

Django: [email protected] в admin

У меня есть, казалось бы, простая проблема, но я не нашел способ ее отладить.

В admin на нашем веб-сайте при редактировании объекта, который имеет ForeignKey для пользователя, все пользователи отображаются как [защищенный электронной почтой]. Это делает администратор непригодным для использования в этих областях!

Я попытался решить проблему, но поскольку термин "защищенный электронной почтой" появляется во многих списках рассылки в несвязанном контексте, я не могу найти решение. Кроме того, я искал "защищенный электронной почтой" в кодовой базе Django, но я не нашел его.

Любая идея, что делать?

4b9b3361

Ответ 1

Я действительно не знаю ответа, но всякий раз, когда я вижу [защищенный электронной почтой], отображающийся в 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){}})();
/* ]]> */

Это может помочь вам. (Осмотрите свой элемент, чтобы узнать, относится ли это к вам тоже.)

Если вы также видите это в своем коде, This и это может помочь вам.

РЕДАКТИРОВАТЬ: Похоже, что это вызвано Obfuscation электронной почты Cloudflare.

Ответ 2

Email obfuscation - это хорошо для публичного сайта, и я бы хотел отключить его для администратора. Поэтому я пишу это промежуточное программное обеспечение, чтобы отключить обфускацию электронной почты в admin.

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'

Ответ 3

Я также сталкивался с этой проблемой и столько раз терял решение. Наконец, я решил эту проблему, просто добавив.

Опция 1:

Добавить в HTML-страницу

<!--email_off-->YOUR_EMAIL_ADDRESS<!--/email_off-->

Проблема в основном для "запутанной электронной почты Cloudflare".

Вариант-2:

Деактивировать от dashbaord.

  1. Войдите в панель управления Cloudflare.

  2. Убедитесь, что выбран веб-сайт, который вы хотите проверить.

  3. Нажмите приложение Scrape Shield.

  4. В разделе "Запутывание адреса электронной почты" убедитесь, что переключатель включен.