2011-05-12 7 views
7

default_if_noneはDjangoテンプレートで使用していますか? Djangoのドキュメントから

変数が が存在しない場合、一般的に、テンプレートシステムが「」に設定されている TEMPLATE_STRING_IF_INVALID設定、 の値を挿入する(空文字列) デフォルトでは TEMPLATE_STRING_IF_INVALIDが 「」(空文字列)に設定されている場合、無効な 変数に適用されている

フィルタにのみ適用されます。 TEMPLATE_STRING_IF_INVALIDを に設定すると、その他の値は可変フィルタ が無視されます。

この動作は、if、for、およびregroupテンプレートの タグの場合は、わずかに異なるです。無効な変数が のテンプレート タグのいずれかに指定されている場合、変数は と解釈されます。これらの テンプレートタグ内の無効な変数は、常に 個の変数に適用されます。

ため場合以外のテンプレートタグやフィルタのために、常に「」に翻訳さ無効な変数は、を再グループ化する場合は、テンプレートフィルタdefault_if_noneは何が良いのでしょうか?廃止されましたか?

答えて

11

無効な変数と存在するが、値はNoneです。 {{ banana }}Noneに解決しながら、あなたのテンプレート{{ apple }}が​​に解決で

{'apple':'green','banana':None}` 

、および{{ orange }}TEMPLATE_STRING_IF_INVALIDに解決:

は、次のコンテキストを考えてみましょう。

今度は{{ banana|default_if_none:'yellow' }}と考えて、default_if_noneタグを使用してください。

3

私はdefault_if_noneを数回使用した場合です。私はコントロールを持たず、テンプレートのデータを表示しているセカンダリデータベースにクエリしています。ほとんどの場合、データは正常に表示されますが、データ値はNoneと表示されることがあります。その場合、私はフィルタを使用します。サイトの一般市民と、ユーザーは通常None値が何を意味するか理解していない

{{ data_value|default_if_none:"N/A" }} 

、より親しみやすい言葉に置き換えることにより、フィルタdefault_if_noneがでてきますハンディ。

+0

複数のフィルタを結合する場合には注意してください。たとえば、 'value | upper | default_if_none:" - "' not 'のようにすると、 'value | default_if_none:" - "| upper' – Virako

関連する問題