我使用'messages'界面来传递消息给用户,就像这样:
request.user.message_set.create(message=message)
我想在我的{{message}}变量中包括html,并在不转义模板中的标记的情况下呈现它。
我使用'messages'界面来传递消息给用户,就像这样:
request.user.message_set.create(message=message)
我想在我的{{message}}变量中包括html,并在不转义模板中的标记的情况下呈现它。
你可以像这样在你的代码中渲染一个模板:
from django.template import Context, Template
t = Template('This is your <span>{{ message }}</span>.')
c = Context({'message': 'Your message'})
html = t.render(c)
更多信息请参阅Django文档。
如果你不希望HTML被转义,看看安全过滤器和autoescape标签:
安全:
{{ myhtml |safe }}
自动逃生:
{% autoescape off %}
{{ myhtml }}
{% endautoescape %}
如果你想对你的文本做一些更复杂的事情,你可以创建自己的过滤器,并在返回html之前做一些神奇的事情。 使用如下的模板文件:
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>
这会给你一个很好的结果。
不需要在模板中使用过滤器或标签。 只需使用format_html()将变量转换为html, Django就会自动为你的变量关闭转义。
format_html("<h1>Hello</h1>")
点击这里查看https://docs.djangoproject.com/en/3.0/ref/utils/#django.utils.html.format_html