2012-01-08 1 views
3

私はbase.htmlのコードの下に書くために、すべてのページの上部に 'hello、XXX'(XXX = request.session ['user'])を出力します。Djangoの動的変数の使い方base.html

hello {{ request.session['user'] }} 

とそこに持ってTemplateSyntaxError:

Could not parse the remainder: '['user']' from 'request.session['user']' 

が同様の質問がありますが、私は本当に理解していません。 Dynamic variables in Django base.html

XXXが関数の戻り値である場合、この関数を書き込む場所とこの値のレンダリング方法は?

ありがとう:)

答えて

2

これは、base.htmlにあることとは関係ありません。関数を呼び出さないので、関数とは何の関係もありません。問題は、単にテンプレートの構文に関するドキュメントを読んでいないことです。テンプレートでは、属性アクセスと辞書検索の両方が "。"で行われます。

{{ request.session.user }} 

あなたはとにかく、このためのセッションを使用したい理由をユーザーがからrequest.userにあるので、私は、知りませんが。

+0

私のアプリはdjango authを使用しない単純なウェブサイトです。 request.session ['user'] = {'uid':uid、 'nickname':ニックネーム}のときにSESSION ['user']が作成され、各ページの上部にhello XXXがあります。 base.htmlに{{request.session.user.nickname}}を書きますが、それは動作しませんが、XXXは関数の戻り値であればセッションは実際に – leiyonglin

1

私が覚えている限り、{{ user }}がDjangoのユーザー認証システムを使用している場合は、{{ user.username }}を使用しようとする可能性があります。

this threadをご覧ください。お役に立てれば。

2

Djangoでは、テンプレートコード(request.session ['user']など)でリストインデックスを使用しないで、代わりにrequest.session.userのような「並べ替え」関数としてタイプします。これはテンプレートシステムの仕組みです。

あなたのユースケースでは、Djangoにrequest.session.userという別名があり、それは単にuserと呼ばれています。たとえば、自分のユーザー名を取得したかった:user.usernameまたはuser.first_nameです。あなたはもちろん同じことを達成することができますrequest.session.user.username

+1

を作成しました。値をbase.htmlにレンダリングする方法:) – leiyonglin

関連する問題