2010-08-04 13 views
6

मुझे वर्तमान में एक गंभीर समस्या का सामना करना पड़ रहा है। मैं मानक django व्यवस्थापक इंटरफ़ेस सहित उपयोग करता हूं। मेरे मॉडल में से एक को प्रदर्शित करने के लिए सूची बदलें। मॉडल में एक फ़ील्ड है, जिसमें एक लिंक शामिल है (उदा। डेटाबेस में: http: // localhost: 8000/data/somefile.pdf '> लिंक)।Django व्यवस्थापक परिवर्तन सूची में अनचाहे HTML स्ट्रिंग प्रदर्शित करें

अब मुझे जो चाहिए वह यह है कि इस स्ट्रिंग को अनचाहे प्रदान किया गया है और लिंक के रूप में प्रदर्शित किया गया है। मैंने पहले से ही "change_list_results.html" में निम्नलिखित कोशिश की है:

{% for result in results %} 
<tr id="{{ result.1|adminfilter }}" class="{% cycle 'row1' 'row2' %}"> 
    {% for item in result %} 
     {{ item|safe }} 
    {% endfor %}</tr> 
{% endfor %} 

मैंने आउटपुट की वास्तविक वस्तु पर "सुरक्षित" उपयोग किया। इसके अलावा मैंने "{% ऑटोस्केप ऑफ%}" की कोशिश की। वही परिणाम, स्ट्रिंग बच निकला।

क्या आपको स्ट्रिंग प्रदर्शित होने का कोई अन्य तरीका दिखाई नहीं देता है?

उत्तर

15

आप अपनी विधि पर allow_tags=True सेट करना चाहते हैं। यह थोड़ा छिपा हुआ है, लेकिन यह दस्तावेज़ीकरण में वर्णित है - एक स्क्रीन के बारे में या तो this link से आपको नीचे ले जाता है।

+0

डैनियल, संकेत के लिए धन्यवाद। मुझे मॉडल में एक विधि परिभाषित करना पड़ा जो लिंक देता है और इस विधि को चिह्नित करता है .allow_tags = True। –

+0

क्योंकि लिंक, उत्तर अभी भी सही है। लेकिन Django 1.9 में 'allow_tags' को बहिष्कृत किया गया है। इसके बजाय 'format_html()' का उपयोग करें: 'संस्करण 1.9: के बाद से बहिष्कृत पुराने संस्करणों में, आप ऑटो-एस्केपिंग को रोकने के लिए विधि में allow_tags विशेषता जोड़ सकते हैं। यह विशेषता बहिष्कृत है क्योंकि इसके बजाय format_html(), format_html_join(), या mark_safe() का उपयोग करना सुरक्षित है। https://docs.djangoproject.com/en/dev/ref/contrib/admin/#django.contrib.admin.ModelAdmin.list_display – gabrieloliveira

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