' SessionStore'对象没有属性'电子邮件'

时间:2015-05-11 07:01:40

标签: python django session session-storage sessionstorage

我正在努力在django中访问我的会话变量。

我有两个不同的应用程序custom_user和文章。 在我的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})

我的articles.html文件继承了base.html文件,并且我使用{{loggedin}}来访问该变量。 我使用过{{request.session.email}},但这也不起作用

我最终想要做的是在导航栏中显示我的网站中登录的用户的电子邮件地址,该地址位于base.html文件中。

我只获取了在auth_view函数中呈现的loggedin.html文件中的user.email值。但不在任何其他html文件中。

1 个答案:

答案 0 :(得分:4)

您应该以:

的形式访问它
'loggedin': request.session['email']

...就像你定义它一样。

另外,为防止未设置错误,您可以使用:

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

详细了解在视图in the docs中使用会话变量。