如何在视图中将字符串声明为已转义或 'safe'?

How to declare a string as already escaped or 'safe' inside of the view?

我的 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 %}

但我不想让设计师决定什么是安全的,什么不是。那么如何在视图中甚至在模型中将此字符串标记为 'safe' 以防止模板转义它?

*我知道我可以在模板中使用 |linebreaksbr,但这只是目前的一个例子。我也打算在文字中嵌入图片。

应该这样做:

from django.utils.safestring import mark_safe

foo = mark_safe(foo)

根据 django 文档: "escape(text): Returns the given text with ampersands, quotes and angle brackets encoded for use in HTML. The input is first passed through force_text() and the output has mark_safe() applied."
所以,'escaping'返回前的孔串应该就够了。
如果模型字段本身在模板中呈现时未正确显示,也许您可​​以尝试定义一个模型 属性 returns escape(self.body_html)