私は以下の作業をしようとしています。ループ変数をDjangoテンプレートの辞書キーとして使用する
カウントループはすべての値に対してループスルーする必要があり、ユーザーは各カウントに関連付けられていない可能性がありますが、カウント値i
はJavaScriptに渡すために各ループで使用する必要があります。
Pythonの一部:
users = {}
users[1]={}
users[1][id]=...
users[1][email]=...
...
count=[1,2,3,4,5,6,7,8,9,10]
Djangoテンプレートパーツ:
{% for i in count %}
do some stuff with the value i using {{i}} which always returns the value, i.e. 1
email:{% if users.i.email %}'{{users.i.email}}'{% else %}null{% endif%}
{% endfor %}
これは、電子メールのために何も返しません。 {% if user.i.email %}
にi
の代わりに番号1
を入力すると、ユーザーの電子メールアドレスが返されます。 私はJavaScriptでデータを使用しているので、存在しない場合は暗黙的にnullにする必要があります。 私はDjangoに値iの代わりに変数としてi
変数を認識させるように見えません。
それは私が "with
" 文
{% for i in count %}{% with current_user=users.i %}...
、その後current_user.email
を使用してを使用してみましたが、何も
email:{% if users.[i].email %}'{{users.[i].email}}'{% else %}null{% endif%}
をスローするよう[]
を使用すると、動作しません。
も試してみました
{% for i in count %}{% with j=i.value %}...
それがうまくいく場合に備えて、j
を使用しようとしましたが、同じ結果です。
ユーザーオブジェクトをループし、キー/値と等しいかどうかをチェックするインナーforループを作成することを考えましたが、高価でスケーラビリティに欠けます。
Djangoを変数として表示するようにDjangoを強制する方法はありますか?それはインデックスとしての価値ですか、それとも他の方法でこれを回避するのですか?
おかげ
Jayd* 編集:以下、Abhiによって示唆されているように
私は、ループのための余分を試してみました。
{% for i in count %}
{% for key, current_user in users.items %}
do some stuff with the value i using {{i}} which always returns the value, i.e. 1
email:{% if i == key and current_user.email %}'{{current_user.email}}'{% else %}null{% endif%}
{% endfor %}
{% endfor %}
この種類の作品ですが、今ではユーザーのすべての価値に対してdo some stuff with the value i
を繰り返します。 ifを入れた場合:
カウントに特定のユーザーがない場合は、ループが無視されます。
私がこれを見ることができる唯一の方法は、それぞれの場所でユーザーループを使用してcurrent_user
を使用することです。
{% for i in count %}
do some stuff with the value i using {{i}} which always returns the value, i.e. 1
email:{% for key, current_user in users.items %}{% if i == key and current_user.email %}'{{current_user.email}}'{% else %}null{% endif%}{% endfor %}
{% endfor %}
これは非常に高価なようです。 アイデア
私は多分キーとしてi
を使用して、ユーザーの値を返すフィルター書くことを考えていました:
{% with current_user=users|getuser:i %}
をしかし、ここで、これは動作する場合、私は知らないか、私は同じエラーを取得しますi
が変数名の代わりに値 'i'として渡されています。
私はそれほど長く試してみます。
* 編集
これは動作しませんでした。 フィルターは{{}}
を使用して処理しましたが、{% %}
の内部では機能しませんでした。入力
を試してみてください、リストや辞書のいずれかでJaydコードを使用可能にしますか –
編集ボックスの右側に明確な書式プロンプトを表示するのではなく、この質問全体で**太字の書式設定を使用したのはなぜですか? –
書式設定の謝罪、投稿をしたときにプロンプトが表示されませんでした。 – Jayd