我的Django模型有两个文本字段:
body = models.TextField()
body_html = models.TextField()
第二个填充如下:
def save(self, force_insert=False, force_update=False, using=None, update_fields=None):
self.body_html = "<br />".join(escape(self.body).split("\n"))
return models.Model.save(self, force_insert=force_insert, force_update=force_update, using=using, update_fields=update_fields)
不,如果我在模板中使用body_html,我仍然需要:
{% autoescape off %}
{{ foo.body_html }}
{% endautoescape %}
但我不想让设计师决定什么是安全的,什么不是。那么如何在视图内部甚至在模型内部将此字符串标记为“安全”以防止模板转义?
*我知道我可以在模板中使用| linebreaksbr,但这只是一个例子。我打算在图片中嵌入图片。
答案 0 :(得分:3)
应该这样做:
from django.utils.safestring import mark_safe
foo = mark_safe(foo)
答案 1 :(得分:0)
根据django docs:
&#34; escape(text):返回给定的文本,其中的&符号,引号和尖括号编码用于HTML。输入首先通过force_text()传递,输出应用了mark_safe()。&#34;
所以,&#39;逃避&#39;返回之前的孔串应该足够了
如果模型字段itsef在模板中呈现时未正确显示,则可能尝试定义返回escape的模型属性(self.body_html)