【发布时间】:2016-05-15 21:52:59
【问题描述】:
我正在尝试设置一个模型中包含 MarkupField 的 Django 应用程序,如下所示:
from django.db import models
from markupfield.fields import MarkupField
class Recipe(models.Model):
instructions = MarkupField(default_markup_type='markdown')
然后我在 Jinja2 模板中渲染该字段,如下所示:
{% if recipe.instructions %}
{{ recipe.instructions }}
{% else %}
No instructions have been added yet.
{% endif %}
markdowned 文本的渲染完美无缺,但它作为字符串放置在 DOM 中,因此浏览器不会解释 HTML 标记,如您在此处看到的:
我不觉得我错过了 django-markupfield 文档中的相关内容,但不知何故我需要摆脱这个字符串表示。
你们中有人有想法吗?提前致谢。
【问题讨论】:
-
如果您添加
safe过滤器是否有效:{{ recipe.instructions|safe }}? -
@doru 不,不起作用。
-
如果你使用
recipe.instructions.rendered,它有什么改变吗? -
@doru 也不起作用。我设法通过
{% autoescape off %}{{ recipe.instructions }}{% endautoescape %}让它工作,就像this question 中建议的那样。虽然觉得有点不方便...