检查是否有人登录Django

时间:2017-12-08 05:57:45

标签: django django-views

我正在开发一个新的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)

如果有用户登录但是如果没有用户登录则无效...

3 个答案:

答案 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')

这只是示例,请根据您的要求进行更改。

希望对你有帮助。

相关问题