2017-02-03 14 views
0

// EDIT無効なブロックタグ

私は、標準的なテンプレート言語ではなく、神社を使用しています。標準テンプレート言語はsetタグをサポートしていません。

jinjaを使用して新しい変数を宣言するにはどうすればよいですか?

エラーに次のコードブロックの結果の2行目:

{% set msg_class = "" %} 

エラーメッセージ:

ライン13に無効なブロック・タグ:予想「ELIF」「を設定」「そう」または 'endif'。このタグを登録または読み込むのを忘れましたか?

コードの残り:私が見つけた次のスレッドのように配列を使用して

{% if msg %} 
    {% set msg_class = "" %} 
    {% if status == 1 %} 
    {% set msg_class = "alert alert-success" %} 
    {% elif status == 3 %} 
    {% set msg_class = "alert alert-danger" %} 
    {% elif status == 4 %} 
    {% set msg_class = "alert alert-warning" %} 
    {% else %} 
    {% set status = 2 %} 
    {% set msg_class = "alert alert-info" %} 
    {% endif %} 
{% endif %} 

は、私には本当に醜いようです。唯一の解決策ですか?なぜ、このようにそれを簡素化していない

Can a Jinja variable's scope extend beyond in an inner block?

+0

ていますか?これは、標準のDjangoテンプレート言語のエラーです。 –

+0

私はhtmlテンプレートでコードを使用すると、それはjinjaと呼ばれていましたか?私が間違っている? https://en.wikipedia.org/wiki/Jinja_(template_engine) – user2871190

+1

はい、間違っています。 Jinjaは別のテンプレートシステムで、Djangoはサポートしていますが、デフォルトはサポートしていません。 Djangoのサイトでよく書かれている、 'set'タグをサポートしていない標準のテンプレート言語を使用しています。 –

答えて

1

? Djangoのテンプレート言語で

{% set classes = ['success', 'info', 'danger', 'warning'] %} 
{% if status not in [1,3,4] %} 
    {% set status = 2 %} 
{% endif %} 
{% set msg_class = "alert alert-"+classes[status-1] %} 
+0

ありがとう、それはこの方法で良い方法です!それは私の問題thoのための解決策ではない。 – user2871190

+0

ジャンゴエンジンの@jrbedarには、悲しいことに、タグ 'set'がありません。誰もが実際に彼らが考えているjinja2。それが私がこの問題の答えを探している理由です。 – holms

2

変数は次のように使用することができます:あなたは神社を使用していることを確認

{% with name="World" greeting="Hello" %}  
{{ greeting }} {{name}} 
{% endwith %} 

https://docs.djangoproject.com/en/dev/ref/templates/builtins/#with

+0

私は30分かけてjinja2の "set"ブロックを使っています。私はDjangoのテンプレートがvanilla jinja2と少し違っていたことに気付かなかった。ありがとうございました! – nanselm2

関連する問題