2017-06-02 10 views
1

私はDjangoを使用しています。レンダリングメソッドで渡す引数(args)にアクセスできません。私はエラーを取得します:TemplateSyntaxError at/app /。 は残りを解析できませんでした: 'から[' メッセージ ']' '引数[' メッセージ ']'djangoのレンダリング関数のargsにアクセスする

再生回数:

def index(request): 
messages = ["This is message1", "This is message2"] 
args = {'messages': messages} 

return render(request, 'app/index.html', args) 

インデックスhtmlファイル:

{% for message in args['messages'] %} 

<div class="live_message"> 
    <p>{{ message }}</p> 
</div> 
{% endfor %} 

を何を行っています間違っていて、どうすれば修正できますか?

答えて

2

「args」と呼んでいるものは、Djangoが「コンテキスト」を呼び出します。

コンテキストキーを辞書キーとして参照する必要はありません。したがって、このようなあなたのテンプレートタグは、あなたはそれを動作させるために必要なすべてである必要があり言い換え:

{% for message in messages %}

+0

まあ、私はそれが仕事をした、のろわれます。なぜそれは機能するのですか? Djangoは辞書をレンダリング関数の複数のリストに変換しますか?私ができる時にあなたの答えを数分で受け入れます。 – Heuristics

+0

テンプレートタグは、Pythonのように見えるが、すべての規則に従わない言語抽象であるため、辞書アクセスのようなものは期待通りに機能しません。コンテキスト内の最上位のキーと値のペア(「args」)は、キーだけで参照されます。 devドキュメントは読み込み価値があるので、レンダリング中に何ができるのか分からないのか分かります:https://docs.djangoproject.com/ja/dev/ref/templates/builtins/ – Ivan

関連する問題