我试图在模板中渲染一个对象,就像我们可以用表单{{ 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)
答案 0 :(得分:1)
您应该实施__unicode__
而不是__str__
。模板化模块将上下文变量字符串化为unicode。
答案 1 :(得分:0)
如果尝试将html打印到页面上,那么您应该使用{{myobject|safe}}
。这应该呈现HTML
代码而不是文本
答案 2 :(得分:0)
您也可以使用
{% autoescape off %}
{{ info }}
{% endautoescape off %}
但你必须小心避免xss漏洞。