首页 » Python » Django登录验证

Django登录验证

原文 http://blog.csdn.net/qq_29113041/article/details/77910856

2017-09-09 12:20:30阅读(523)

装饰器:

def login(func):
    def wrapper(request, *args, **kw):
        if 'uname' not in request.COOKIES:
            response = redirect('login')
            response.set_cookie('url', request.get_full_path()) #记录用户浏览的URL
            return response
        else:
            return func(request, *args, **kw)
    return wrapper
登录时会设置一个键为uname的COOKIE,所以在进入某些页面前用此装饰器判断用户是否登录,如果已经登录,则返回该页面的view层方法,正常跳转。如果用户未登录则记录下用户浏览的完整URL,在登录成功后跳转到用户刚才浏览的URL

def login(request):
    if request.method == 'GET':
        return render(request, 'login.html', {})
    if request.method == 'POST':
        username = request.POST['username']
        password = request.POST['pwd']
        count = UserInfo.objects.filter(username=username).count()
        if count == 0:
            return redirect(to='login')
        else:
            user = UserInfo.objects.get(username=username)
            if user.password == password:
                url = request.COOKIES.get('url', '/index')#如果'url'存在返回url,否则跳转index
                response = redirect(to=url)
                response.set_cookie('uname', username, max_age=3600)
                return response
            else:
                return redirect(to='login')

最新发布

CentOS专题

关于本站

5ibc.net旗下博客站精品博文小部分原创、大部分从互联网收集整理。尊重作者版权、传播精品博文,让更多编程爱好者知晓!

小提示 »

按 Ctrl+D 键,
把本文加入收藏夹

图书推荐 »