Jinja2からDjangoでテンプレートを実行した後にhtmlを出力しようとしています。 {{ 'RAW' }}
と{% raw %}...{% endraw %}
のタグは、私が期待していることをしていないし、これに関する多くのドキュメンテーションも、私のグーグル・グリーディングが有用ではない。Jinja 2:エスケープと拡張
例として、次の一連のテンプレートを検討してください。 1つは、伸ばしたいストックジンジャー2の基本ページです。
{# 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 %}
2番目は、拡張したい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テンプレートがあります。その考え方は、最初はジンジャを介して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
/エスケープコードに影響を与える理由についての説明はありません。
ええと、おそらく私は最後に右端を配置する必要がありますか?