2011-07-26 9 views
3

私はDjangoテンプレートを使用しているWebサイトで作業しています。ペアの中括弧を含むHTMLを生成する必要があります。コードブロックに対してDjangoのタグ処理を無効にする方法はありますか?出力に{% LITERAL {{ BRACES }}を生成する...Djangoが中括弧を含むブロックを解釈しないようにするにはどうすればよいですか?

{% literal %} 
{% LITERAL {{ BRACES }} 
{% endliteral %} 

:ようリテラルブロックタグのようなものは、いいだろう。

答えて

2

EDIT: あなたの構文は、現在の字句解析/パーサシステムで現在は不可能です。

なぜですか?基本的に、テンプレートシステムにはLexerとParserがあります。 Lexerはテンプレート文字列を入力として取り、それをトークン化します。パーサーは、コンストラクタ内のトークンのリストを取得し、コンパイルされたテンプレートのノードの束のリストに解析します。テンプレートタグとフィルタは、すでに構築されたパーサにのみアクセスできます。最初のレクサー文字列にはアクセスできません。 django/templates/__init__.py

のコメントを参照してください。ただし、解決策があります。これは私のものではありませんが(以下を参照)、基本的にサーバー側には{%ssi some_file.html%}にリテラルテキストを含む余分なファイルが含まれています。はい、これは醜い解決策です。テンプレートシステムの大規模な書き直しがなければ、十分でなければなりません。レコードの

Easy Way to Escape Django Template Variables

0
+0

無用です。あなたは真剣に私が '{%templatetag openblock%} LITERAL {%templatetag openvariable%} BRACES {%templatetag closevariable%}'と書かなければならないことを真剣に示唆していますか?ブロックには何百ものブレースペアが含まれている可能性があります。 –

5

、これはテンプレートタグの逐語的に可能になりました。

+0

'verbatim'タグのドキュメントへのリンクは以下の通りです: https://docs.djangoproject.com/ja/dev/ref/templates/builtins/?from=olddocs#verbatim – TheRightChoyce

関連する問題