django-markupfield returns 字符串

django-markupfield returns string

我正在尝试设置一个 Django 应用程序,它的模型中有一个 MarkupField,如下所示:

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 文档中的相关内容,但不知何故我需要摆脱这种字符串表示形式。

你们有人知道吗?提前致谢。

感谢@doru 的建议,我偶然发现了 Jinja2 文档并找到了自动转义语句:

{% autoescape off %}{{ recipe.instructions }}{% endautoescape %}

这个对我有用。

甚至可以通过将 autoescape 选项设置为 False 使其在全球范围内工作。

{
    'BACKEND': 'django_jinja.backend.Jinja2',
    ...
    'OPTIONS': {
        'autoescape': False,
        ...
    }
},