gpt4 book ai didi

python - base.html 无法访问 {% if user.is_authenticated %}

转载 作者:太空宇宙 更新时间:2023-11-04 08:08:35 25 4
gpt4 key购买 nike

在我的 base.html 中,user.is_authenticated 总是返回 false...

我希望基本模板在“登录和注销”之间切换

帮助将不胜感激


基础.html

<div id="leftsidebar">
{% block leftsidebar %}
{% if user.is_authenticated %}
<p><a href="/logout/">logout</a></p>
{% else %}
<p><a href="/login/">Login</a></p>
{% endif %}
{% endblock %}
</div> <!-- end leftsidebar -->

表单.py

from django import forms
from django.contrib.auth.models import User
from django.forms import ModelForm
from drinker.models import Drinker
from django.contrib.auth import authenticate, login, logout

class LoginForm(forms.Form):
username = forms.CharField(max_length=255, required=True, label=(u'User Name'))
password = forms.CharField(max_length=255, required=True, label=(u'Password'), widget= forms.PasswordInput(render_value=False))

View .py

from django.http import HttpResponseRedirect
from django.shortcuts import render_to_response
from django.template import RequestContext
from drinker.forms import RegistrationForm, LoginForm
from django.contrib.auth.models import User
from drinker.models import Drinker
from django.contrib.auth import authenticate, login, logout

def ProfileRequest(request):
if request.user.is_authenticated():
return render_to_response('profile.html')
else:
return render_to_response('/', {'user': request.user.username})

最佳答案

当用户通过身份验证时,您不会在上下文中传递任何内容,因此 {{ user }} 为空。您可以在上下文字典中显式传递它,即第二个参数,但更好的做法是使用上下文处理器自动执行此操作:这些仅在您使用 RequestContext 时运行。

有一个快捷方式可以为您执行此操作:

from django.shortcuts import render

...
return render(request, 'profile.html', {})

另请注意,else 语句没有任何意义:如果用户未通过身份验证,则不会有用户名。

关于python - base.html 无法访问 {% if user.is_authenticated %},我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27105417/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com