我想通過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
/轉義代碼。
嗯..也許我必須把延伸權利在最後?