0

django でセッション変数にアクセスするのに苦労しています。

custom_user と article の 2 つの異なるアプリがあります。custom_user の views.py ファイルで、セッション変数を宣言しました。

def auth_view(request):
    username = request.POST.get('username', '')
    password = request.POST.get('password', '')
    user = auth.authenticate(username=username, password=password)

    if user is not None:
        auth.login(request, user)
        request.session['email'] = user.email
        return render_to_response(request, "loggedin.html", locals(),context_instance=RequestContext(request))
    else:
        return HttpResponseRedirect('/accounts/invalid')

記事アプリのviews.pyでは、このようにアクセスしています。

def articles(request):

    return render_to_response('articles.html',
        {'articles':Article.objects.all().order_by('-id'),'last':Article.objects.earliest('-pub_date'), 'loggedin':request.session.email})

私の article.html ファイルは base.html ファイルを継承し、そこで {{loggedin}} を使用して変数にアクセスしています。{{request.session.email}} を使用しましたが、これも機能しません

最終的にやりたいことは、base.html ファイルにある navbar で、サイト全体にログインしているユーザーの電子メール アドレスを表示することです。

auth_view関数でレンダリングされたloggedin.htmlファイルのuser.email値のみを取得しています。他のhtmlファイルにはありません。

4

1 に答える 1

4

次のようにアクセスする必要があります。

'loggedin': request.session['email']

...定義したのと同じ方法で。

また、設定されていない場合のエラーを防ぐために、次を使用できます。

'loggedin': request.session.get('email')

ビューでセッション変数を使用する方法の詳細については、 ドキュメントを参照してください。

于 2015-05-11T07:08:24.167 に答える