HTML के रूप में एक टेम्प्लेट चर का प्रतिपादन


186

मैं इस तरह से उपयोगकर्ता को संदेश भेजने के लिए 'संदेश' इंटरफेस का उपयोग करता हूं:

request.user.message_set.create(message=message)

मैं अपने {{ message }}वैरिएबल में html को शामिल करना चाहता हूं और टेम्प्लेट में मार्कअप से बचकर इसे रेंडर करना चाहता हूं ।

जवाबों:


331

यदि आप नहीं चाहते कि HTML बच जाए, तो safeफ़िल्टर और autoescapeटैग देखें:

safe:

{{ myhtml |safe }}

autoescape:

{% autoescape off %}
    {{ myhtml }}
{% endautoescape %}

यदि आपको यूरो ( €) जैसे मुद्रा के संकेतों को प्रदर्शित करने की आवश्यकता है , तो डॉलर को देखने के लिए पारित किया जाता है।
औरलैब्स

ध्यान दें कि यह है autoescape offऔर नहीं on। मैंने वह गलती की और उसे बाद में ही खोजा।
अनुपम

37

यदि आप अपने पाठ के साथ कुछ अधिक जटिल करना चाहते हैं, तो आप अपना स्वयं का फ़िल्टर बना सकते हैं और html वापस करने से पहले कुछ जादू कर सकते हैं। एक templatag फ़ाइल इस तरह दिख रही है:

from django import template
from django.utils.safestring import mark_safe

register = template.Library()

@register.filter
def do_something(title, content):

    something = '<h1>%s</h1><p>%s</p>' % (title, content)
    return mark_safe(something)

तब आप इसे अपनी टेम्पलेट फ़ाइल में जोड़ सकते हैं

<body>
...
    {{ title|do_something:content }}
...
</body>

और यह आपको एक अच्छा परिणाम देगा।


30

आप अपने कोड में एक टेम्पलेट को प्रस्तुत कर सकते हैं जैसे:

from django.template import Context, Template
t = Template('This is your <span>{{ message }}</span>.')

c = Context({'message': 'Your message'})
html = t.render(c)

देखें Django डॉक्स अधिक जानकारी के लिए।


मुझे लगता है कि मुझे यहां छड़ी का गलत अंत मिल गया है, लेकिन मैं अभी के लिए जवाब छोड़ देता हूं।
मार्कस व्हाट्सब्रो

30

autoescapeHTML को बंद करने से बचने के लिए उपयोग करें :

{% autoescape off %}{{ message }}{% endautoescape %}


6

टेम्पलेट में फ़िल्टर या टैग का उपयोग करने की आवश्यकता नहीं है। बस HTML के लिए चर का अनुवाद करने के लिए format_html () का उपयोग करें और Django स्वचालित रूप से आपके चर से बच जाएगा।

format_html("<h1>Hello</h1>")

यहां देखें https://docs.djangoproject.com/en/3.0/ref/utils/#django.utils.html.format_html

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.