我想通过Jinja2运行我的模板之后通过Django输出html。 {{ 'RAW' }}
和{% raw %}...{% endraw %}
标签没有做到我期望的那样,并且没有很多关于此的文档,也不会对我的搜索结果产生任何帮助。Jinja 2:转义和延伸
举一个例子,考虑下面的一系列模板。第一个是需要扩展的Jinja2基本页面。
{# jinja_base.html #}
{% block jinja_head %}
JINJA HEAD
{% endblock jinja_head %}
{% block jinja_body %}
JINJA BODY
{% endblock jinja_body %}
{% block jinja_foot %}
JINJA FOOT
{% endblock jinja_foot %}
第二个是股票Django模板页面,一个想扩展。
{# django_base.html #}
{% block django_head %}
DJANGO HEAD
{% endblock django_head %}
{% block django_body %}
DJANGO BODY
{% endblock django_body %}
{% block django_foot %}
DJANGO FOOT
{% endblock django_foot %}
要扩展它们两个,我有一个Jinja/Django mixin模板,其内容如下。这个想法是先通过Jinja,然后再通过Django。
{# mixin.html #}
{{ '{% extends "django_base.html" %}' }}
{% extends "jinja_base.html" %}
{{ '{% block django_head %}' }}
{% block jinja_head %}
MIXIN HEAD
{% endblock jinja_head %}
{{ '{% endblock django_head %}' }}
{{ '{% block django_body %}' }}
{% block jinja_body %}
MIXIN BODY
{% endblock jinja_body %}
{{ '{% endblock django_body %}' }}
{{ '{% block django_foot %}' }}
{% block jinja_foot %}
JINJA FOOT
{% endblock jinja_foot %}
{{ '{% endblock django_foot %}' }}
的神社运行后,我期待下面的输出
{% extends "django_base.html" %}
{% block django_head %}
MIXIN HEAD
{% endblock django_head %}
{% block django_body %}
MIXIN BODY
{% endblock django_body %}
{% block django_foot %}
JINJA FOOT
{% endblock django_foot %}
但是,我得到,而不是下面。
{% extends "jinja_base.html" %}
MIXIN HEAD
MIXIN BODY
JINJA FOOT
这就是嵌入在Jinja转义序列中的所有Django代码都被剥离了。然而第一个标签被保留。
文档中提到,extends
之前的任何内容都保持不变,但之后的所有内容都不是。没有解释如何最好地规避这一点,也没有解释为什么这会影响raw
/转义代码。
嗯..也许我必须把延伸权利在最后?