我使用'messages'界面来传递消息给用户,就像这样:

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

我想在我的{{message}}变量中包括html,并在不转义模板中的标记的情况下呈现它。


当前回答

如果你想对你的文本做一些更复杂的事情,你可以创建自己的过滤器,并在返回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>

这会给你一个很好的结果。

其他回答

你可以像这样在你的代码中渲染一个模板:

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

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

更多信息请参阅Django文档。

使用autoescape关闭HTML转义:

{% autoescape off %}{{ message }}{% 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>

这会给你一个很好的结果。

安全过滤器帮我解决了这个问题。 使用{{data|safe}}包含html。

最简单的方法是使用安全过滤器:

{{ message|safe }}

有关安全过滤器的更多信息,请参阅Django文档。