很抱歉,当我早些时候问这个问题时,如果你试图帮助我。不得不删除该问题,因为出于某种原因不允许我编辑其他信息。
我正在我的 django 网站上实现用户身份验证。一切正常。我的views、models、urls等都设置好了。用户可以注册、登录、注销。我遇到的问题是这段代码:
{% if request.user.is_authenticated %}
<li><a href="/logout">Log Out</a></li>
{% else %}
<li><a href="/login">Log In</a></li>
{% endif %}
即使我已登录,它仍然显示“登录”作为选项而不是“注销”。但是,如果我单击该链接,它会将我重定向到 /profile 因为这是视图告诉它在我登录后执行的操作。所以,很明显它知道我已登录,但模板不是readint user.is_authenticated 为真。
与登录请求相关的视图是:
def LoginRequest(request):
if request.user.is_authenticated():
return HttpResponseRedirect('/profile/')
if request.method == 'POST':
form = LoginForm(request.POST)
if form.is_valid():
username = form.cleaned_data['username']
password = form.cleaned_data['password']
profile = authenticate(username=username, password=password)
if profile is not None:
login(request, profile)
return HttpResponseRedirect('/profile/')
else:
return render_to_response('template/login.html', {'form': form}, context_instance=RequestContext(request))
else:
return render_to_response('template/login.html', {'form': form}, context_instance=RequestContext(request))
else:
''' user is not submitting the form, show them login form '''
form = LoginForm()
context = {'form': form}
return render_to_response('template/login.html', context, context_instance = RequestContext(request))