django在模板中将对象渲染为html

时间:2014-02-28 15:15:35

标签: django django-templates

我试图在模板中渲染一个对象,就像我们可以用表单{{ form }}做的那样,但是输出变成了文本,而不是html代码。如何真正包含HTML代码?

my_object = MyObject()
{{ my_object }}

班级:

from django.template import Context, Template
from django.utils.safestring import mark_safe

class MyObject(object):

    def __str__(self):
        return self.render()

    def render(self):
        t = Template('<p>This is your <span>{{ message }}</span>.</p>')
        c = Context({'message': 'Your message'})
        html = t.render(c)
        return mark_safe(html)

3 个答案:

答案 0 :(得分:1)

您应该实施__unicode__而不是__str__。模板化模块将上下文变量字符串化为unicode。

答案 1 :(得分:0)

如果尝试将html打印到页面上,那么您应该使用{{myobject|safe}}。这应该呈现HTML代码而不是文本

答案 2 :(得分:0)

您也可以使用

{% autoescape off %}
{{ info }}
{% endautoescape off %}

但你必须小心避免xss漏洞。