এইচটিএমএল হিসাবে একটি টেম্পলেট পরিবর্তনশীল রেন্ডারিং


186

আমি ব্যবহারকারীর কাছে বার্তা প্রেরণের জন্য 'বার্তা' ইন্টারফেসটি ব্যবহার করি:

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

আমি আমার {{ message }}পরিবর্তনশীলটিতে এইচটিএমএল অন্তর্ভুক্ত করতে চাই এবং টেমপ্লেটে মার্কআপটি এড়াতে এটিকে রেন্ডার করতে চাই ।

উত্তর:


331

আপনি যদি এইচটিএমএলকে পালাতে না চান তবে safeফিল্টার এবং autoescapeট্যাগটি দেখুন:

safe:

{{ myhtml |safe }}

autoescape:

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

যদি আপনাকে উদ্বোধন করতে হয় যেমন ইউরো ( €) এর মতো মুদ্রার লক্ষণগুলি , ডলারের দৃষ্টিতে এইভাবে চলে গেছে।
andilabs

মনে রাখবেন এটি autoescape offএবং নাও on। আমি সেই ভুলটি করেছি এবং এটি কেবল পরে আবিষ্কার করেছি।
অনুপম

37

আপনি যদি আপনার পাঠ্যের সাথে আরও জটিল কিছু করতে চান তবে আপনি নিজের ফিল্টার তৈরি করতে এবং এইচটিএমএল ফেরার আগে কিছু যাদু করতে পারেন। একটি টেমপ্ল্যাট্যাগ ফাইলটি দেখতে এটির মতো:

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)

আরও তথ্যের জন্য জাজানো ডক্স দেখুন ।


আমি মনে করি এখানে লাঠিটির ভুল প্রান্তটি পেয়েছি তবে আমি আপাতত উত্তরটি রেখেছি।
মার্কাস হোয়ব্রো

30

autoescapeএইচটিএমএলকে পালানো বন্ধ করার জন্য ব্যবহার করুন :

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


6

টেমপ্লেটে ফিল্টার বা ট্যাগ ব্যবহার করার দরকার নেই। এইচটিএমএলে ভেরিয়েবলটি অনুবাদ করতে কেবল বিন্যাস_এইচটিএমএল () ব্যবহার করুন এবং জ্যাঙ্গো স্বয়ংক্রিয়ভাবে আপনার পরিবর্তনশীলটির জন্য পালানো বন্ধ করে দেবে।

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

Https://docs.djangoproject.com/en/3.0/ref/utils/#django.utils.html.format_html এখানে দেখুন

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.