zoukankan      html  css  js  c++  java
  • Django中的cookie和session实现

    cookie

    from django.shortcuts import render, HttpResponse, redirect
    
    
    # 此装饰器的作用就是讲所有没有cookie验证的页面都需要验证后方可跳转
    def login_required(fun):
        def inner(request, *args, **kwargs):
            if not request.COOKIES.get('is_login') == '1':
                next = request.path_info
                print('next', next)
                return redirect('/login/?next={}'.format(next))  # 如果没有cookie,就需要跳转登录页面,但是将此页面的路径拼接到url上
            ret = fun(request, *args, **kwargs)
            return ret
    
        return inner
    
    
    def login(request):
        if request.method == 'POST':
            print(request.get_full_path())
            user = request.POST.get('user')
            pwd = request.POST.get('pwd')
            if user == '1' and pwd == '1':
                next = request.GET.get('next')
                if next:
                    ret = redirect(next)
                else:
                    ret = redirect('/index/')
                ret.set_cookie('is_login', '1', max_age=5)  # 设置cookie {"is_login": '1'} 存储方式为键值对, max_age = 设置过期时间
                return ret
        return render(request, 'login.html')
    
    
    @login_required
    def index(request):
        return render(request, 'index.html')
    
    
    @login_required
    def logout(request):
        ret = redirect('/login/')
        ret.delete_cookie('is_login')  # 删除cookie
        return ret
    
    
    @login_required
    def home(request):
        return HttpResponse('这是home页面')

    sesson

    from django.shortcuts import render, HttpResponse, redirect
    
    
    # 此装饰器的作用就是讲所有没有session验证的页面都需要验证后方可跳转
    def login_required(fn):
        def inner(request, *args, **kwargs):
            if not request.session.get('is_login') == '1':
                next = request.path_info
                return redirect('/login/?next={}'.format(next))
            ret = fn(request, *args, **kwargs)
            return ret
    
        return inner
    
    
    def login(request):
        if request.method == 'POST':
            user = request.POST.get('user')
            pwd = request.POST.get('pwd')
            if user == '1' and pwd == '1':
                next = request.GET.get('next')
                if next:
                    ret = redirect(next)
                else:
                    ret = redirect('/index/')
                request.session['is_login'] = '1'  # 设置session
                request.session.set_expiry(5)  # 设置超时间
                return ret
        return render(request, 'login.html')
    
    
    @login_required
    def home(request):
        return HttpResponse('这是home页面')
    
    
    @login_required
    def index(request):
        print(request.session.session_key)  # 获取django_session表中的键
        print(request.session.exists('vlqc57dhhm9jiy12c70zyii6bnit6xcv'))
        return render(request, 'index.html')
    
    
    def logout(request):
        # request.session.delete()
        request.session.flush()  # 删除该用户的所有数据,删除cookie
        ret = redirect('/login/')
        return ret
  • 相关阅读:
    Java调用wcf
    登录重构小记
    从零打造一个Web地图引擎
    Vue动态组件的实践与原理探究
    揭开Vue异步组件的神秘面纱
    使用vue实现排序算法演示动画
    C#转义字符
    asp.net使用post方式action到另一个页面,在另一个页面接受form表单的值!(报错,已解决!)
    页面关闭事件onbeforeunload 记录
    执行一段sql
  • 原文地址:https://www.cnblogs.com/xiao-xue-di/p/10119307.html
Copyright © 2011-2022 走看看