进行必要的重定向以查看网址

时间:2015-09-16 11:54:29

标签: django authentication login

我有一个网址" mywebsite / home"我有登录表格的地方。我在登录到另一个网址" mywebsite / users"时重定向用户。我在我的数据库中有登录凭据,它应该只供有限的人使用。那么如何才能使重定向成为查看" mywebsite / users&#34 ;?的必要条件。我正在使用django,现在知道URL的任何人都可以访问该页面。

我的观点如下:

 def home(request):
   usr = request.GET.get('username')
   pas = request.GET.get('password')
   userdata = Login.objects.filter(Q(username = usr) | Q(userid = usr))
   if Login.objects.filter(Q(username = usr) | Q(userid = usr)).exists():
     p = list(userdata.values('password'))
     b = p[0]['password']
        if pas == b:
            request.session['usr'] = usr
            return redirect('/users')

def users(request):
    return render(request, "ex.html")

1 个答案:

答案 0 :(得分:0)

由于您使用的是谷歌登录,因此您可能无法使用@login_required装饰器。根据上面定义的视图,您在会话中添加了一个键'usr',我认为可用于检查是否用户具有有效登录名。然后你可以使用这个自定义装饰器:

def user_login(function):
    ''' User login decorator'''
    def wrapper(request, *args, **kw):
        ''' wrapper '''
        if 'usr' not in request.session:
            return HttpResponseRedirect('/home/')
        else:
            return function(request, *args, **kw)
    return wrapper

并将其用作

@user_login
def users(request):
    return render(request, "ex.html")

确保在用户注销时从会话中删除密钥