Django登录验证

来源:互联网 发布:抓取网页数据工具 编辑:程序博客网 时间:2024/05/18 05:42

装饰器:

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

原创粉丝点击