2017-10-18 3 views
0

firstofasを使用した後、そのリストのデータ型が構造を保持していないことがわかりました。たとえば:リスト変数での使用

{% firstof some_list some_string as value %} 

some_listは、上記の有効なリストがある場合は、valueに割り当てられます。しかし、私が{% if pk in value %}のようなことをすると、それが成功したとしても、それは成功するでしょう。{% if pk in some_list %}。私はそれらの両方を印刷するとき:

{{some_list}} 
{{value}} 

は、彼らが同じ出力を与えるが、私は、リストはおそらく asfirstofを使用した後にリストとして保存されていないと思います。思考?

答えて

1

some_listからvalueを割り当てても、期待通りに機能しません。得られるvalueSafeTextであり、listではありません。これは、this answerを使用してチェックすることができます。get_typeというカスタムテンプレートタグが追加され、変数のタイプが取得されます。

それは firstof述べ documentation近い見てみる
<class 'list'> 
<class 'django.utils.safestring.SafeText'> 

出力 Falseのではない最初の引数の変数以下を示し

{% firstof some_list as value %} 
{{ some_list|get_type }} 
{{ value|get_type }} 

{% if some_list %} 
    {{ some_list }} 
{% elif some_string %} 
    {{ some_string }} 
{% endif %} 

valueSafeText型である理由は説明する:{% firstof some_list some_string %}になることを示す彼らの例では

。代入は単にこれを変数valueに代入します。これは私にとってバグではないようです。

+0

ありがとうございます。これが意図した動作かバグかどうか知っていますか? – Anupam

+0

私はドキュメントをよく読んで答えを更新しました。 – ikkuh

+0

ええ、完全にはわかりません。変数に出力を割り当てる場合、変数は割り当てられる値の型を持つ必要があります(そうしないと、割り当てはあまり使われません)。 – Anupam

関連する問題