“SessionStore”对象没有属性“email”

S7H*_*S7H 1 python django session session-storage sessionstorage

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

我有两个不同的应用程序custom_user 和article。在我的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')
Run Code Online (Sandbox Code Playgroud)

在我的文章应用程序的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})
Run Code Online (Sandbox Code Playgroud)

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

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

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

rne*_*ius 5

您应该通过以下方式访问它:

'loggedin': request.session['email']
Run Code Online (Sandbox Code Playgroud)

...以与您定义它相同的方式。

另外,为了防止在未设置的情况下出现错误,您可以使用:

'loggedin': request.session.get('email')
Run Code Online (Sandbox Code Playgroud)

阅读文档中有关在视图中使用会话变量的更多信息。