2012-08-31 13 views
16

मुझे एक साधारण समस्या है, लेकिन मुझे इसे डीबग करने का कोई तरीका नहीं मिला है।Django: [ईमेल संरक्षित] व्यवस्थापक में

हमारी उत्पादन वेबसाइट पर व्यवस्थापक में, जब किसी ऑब्जेक्ट को उपयोगकर्ता के लिए विदेशीकी संपादित किया जाता है, तो सभी उपयोगकर्ता [ईमेल संरक्षित] के रूप में दिखाई देते हैं। यह व्यवस्थापक इन क्षेत्रों में अनुपयोगी बनाता है!

मैंने समस्या को हल करने की कोशिश की, लेकिन क्योंकि "ईमेल संरक्षित" शब्द एक असंबंधित संदर्भ में कई मेलिंग सूचियों में दिखाई देता है, मुझे समाधान नहीं मिल रहा है। इसके अलावा, मैंने Django कोडेबेस में "ईमेल संरक्षित" की खोज की लेकिन मुझे यह नहीं मिला।

कोई विचार क्या करना है?

+0

क्या आपने स्थापित डीजेंगो मॉड्यूल को देखने के लिए देखा है कि यह वहां भी है या नहीं? मुझे आश्चर्य नहीं होगा अगर ऐसा कोई तृतीय पक्ष मॉड्यूल था जो इसका कारण बन रहा है। –

+0

मैंने अभी हाल ही में स्थिर रिलीज (1.4.1) की जांच की है, मुझे कोडबेस में कुछ भी नहीं मिला है। आपके उत्पादन पर Django का कौन सा संस्करण चल रहा है? –

+0

आपके उपयोगकर्ता __unicode__ फ़ंक्शन कैसा दिखते हैं? क्या यह उपयोगकर्ता मेलड्रेस वापस करता है? – Jingo

उत्तर

22

मैं वास्तव में इस सवाल का जवाब पता नहीं लेकिन जब भी मैं देख रहा हूँ [ईमेल संरक्षित] Google पर दिखाई देने, अगर मैं लिंक पर जाएं, फिर ईमेल पता चलता है और अगर मैं तत्व का निरीक्षण इसे पास इस टुकड़े है जावास्क्रिप्ट का:

/* <![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 और this आपकी मदद कर सकता है।

संपादित करें: ऐसा लगता है कि यह Cloudflare's email obfuscation के कारण होता है।

+2

यह वास्तव में क्लाउडफ्लेयर था। –

+2

मैन, मैंने इसकी जांच करने के लिए पूरे घंटे बर्बाद कर दिया है। मेरे संदेह की पुष्टि के लिए धन्यवाद। – Vlad

+1

क्लाउडफ्लेयर के साथ यहां एक ही समस्या है। बस https://www.cloudflare.com/cloudflare-settings?z=YOURDOMAIN.com#page=security पर गए और ईमेल obfuscation बंद करें। –

1

ईमेल obfuscation सार्वजनिक साइट के लिए अच्छी बात है, और मैं इसे व्यवस्थापक के लिए अक्षम करना चाहता हूं। तो मैं व्यवस्थापक में ईमेल obfuscation अक्षम करने के लिए इस midware लिखते हैं।

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' 
+0

चुनकर आप क्लाउडफ्लैश डैशबोर्ड पर पेज नियमों के माध्यम से इसे अक्षम कर सकते हैं। – if237912print

संबंधित मुद्दे