web-dev-qa-db-ja.com

Djangoテンプレート内の変数を表示する

これはかなり基本的な質問です(私はDjangoを初めて使用します)が、テンプレート内のビューで設定された変数を使用するのに問題があります。ビュー内で文字列またはリストを初期化してから(つまり、h = "hello")、テンプレート内でそれを呼び出そうとすると、次のようになります。
{{ h }}
出力もエラーもありません。同様に、テンプレート内に存在しない変数を使用しようとすると、次のようになります。

{{ asdfdsadf }}

エラーは報告されていません。これは正常ですか?また、テンプレート内で変数を使用するにはどうすればよいですか。ありがとう!

15
Anon

テンプレート内の変数にアクセスするには、そのテンプレートをレンダリングするために使用されるコンテキスト内にある必要があります。私の推測では、テンプレートをレンダリングするときに、コンテキストディクショナリをテンプレートに渡していないと思います。

http://docs.djangoproject.com/en/dev/topics/http/shortcuts/#render-to-response

そこで参照されている「辞書」には、コンテキストで使用できるようにしたいすべての変数を含む辞書があります。例えば:

return render_to_response('your_template.html', {'h': h})

「エラーなし」エラーに関する限り...これは無効なテンプレート変数のデフォルト設定です。必要に応じて、プロジェクトの設定で変更できます。

http://docs.djangoproject.com/en/dev/ref/settings/#template-string-if-invalid

24
Josh Wright

使用することもできます

return render(request, 'your_template.html', {'h':h, 'var1':var1})

https://docs.djangoproject.com/es/1.9/topics/http/shortcuts/ の最新のマニュアルを参照してください。

4
Newton

はい!これは正常です。テンプレートでのこのようなエラーはサイレントに失敗し、これはDjangoで予想されます。

テンプレートを適切にレンダリングするには、render_to_response('your_template.html', {'h':h})を使用します(コンテキスト辞書が非常に大きい場合は、厄介なショートカットrender_to_response('your_template.html', locals())もあります)

例を挙げて説明します: http://www.djangobook.com/en/beta/chapter04/ (セクション「無効な変数の処理方法」)

3
dzida