我正在开发一个新的django项目。我正在集成框架附带的Djangos用户登录和注销服务。我有一个视图,在视图中,我想查看user
中是否有request.user
个对象。如果没有,我想重定向到登录页面。如果user
中有request.user
,我想显示用户主页。我怎样才能做到这一点。这是我的代码:
def home(request):
if not request.user:
return redirect('login')
else:
User = request.user
profile = Profile.objects.get(user = User)
parameters = {
'user':User,
'profile':profile,
}
return render(request, 'user/home.html', parameters)
如果有用户登录但是如果没有用户登录则无效...
答案 0 :(得分:2)
def home(request):
if not request.user.is_authenticated:
return redirect('login')
else:
User = request.user
profile = Profile.objects.get(user = User)
parameters = {
'user':User,
'profile':profile,
}
return render(request, 'user/home.html', parameters)
您需要检查用户是否经过身份验证,如果您选中request.user
django将匿名用户作为默认用户
答案 1 :(得分:1)
Django provides a decorator for this:
from django.contrib.auth.decorators import login_required
@login_required
def home(request):
# at this point you know you _always_ have an authenticated user
user = request.user
profile = Profile.objects.get(user=user)
context = {
'user':user,
'profile':profile,
}
return render(request, 'user/home.html', context)
答案 2 :(得分:0)
在views.py文件中检查用户是否登录(认证用户),使用“is_authenticated”方法,如下例:
def login(request):
if request.user.is_authenticated:
print('yes the user is logged-in')
else:
print('no the user is not logged-in')
这只是示例,请根据您的要求进行更改。
希望对你有帮助。