• django-cookie


    Cookie---客户端浏览器存储的一组键值对{key:value}

    在django中cookie的用法:

    1.cookie值获取:

    request.COOKIE是一个字典
    request.COOKIE['name']
    request.COOKIE.get('name')
    
    for k,v in request.COOKIE.items():
        print(k,v)
    
    print(request.COOKIE.keys())
    print(request.COOKIE.values())

    2.在服务器端,操作cookie方法:

    name = request.POST.get("name")
    res = render(request,”login.html“)
    res = redirect(”/login“)
    #设置cookie
    res.set_cookie("name",name)#设置cookie
    res.set_cookie("name",name,max_age=10)#设置cookie超时时间
    res.set_signed_cookie(key,value,salt="dandnao")#加盐操作
    return res
    
    #获取cookie
    v = request.get_signed_cookie(key,salt="dandnao")#获取cookie
    注意:使用上述方法时,如果没有设置默认值,当获取不到cookie时,系统会出异常,为了解决此问题,我们可以设置默认值,defautl=None,无此cookie返回none
    
    
    cookie参数:
        max_age = none,设置超时时间,时间单位为s
        expires = none,设置超时日期
        example:
            import time
            current_time = datetime.datetime.utctime()
            current_time = current_time+datetime.timedelta(second=5)
    
            expires = current_time
    
        path:'/'#cookie生效路径,'/'表示任何url都可以访问
        domain =none #cookie生效域名
        secure =False,https传输
        httponly = False,只能http传输,无法被javascript抓取

    3.cookie保存于客户端,所以通过客户端也可以对cookie进行操作

    1. javascript
    2. jQuery

      1.javascript操作

      document.cookie

      略.....百度

      2.jQuery操作

    由于客户端操作cookie方式较为繁琐,我们可以下载网络上提供用于操作cookie的插件:jQueryCookie
    <script src="/static/js/jQuery.cookie.js>
        $.cookie("list_per_num,30,{path:'/'});
    </script>

    4.cookie之装饰器

        装饰器解释:
        def auth(func):
            def inner(request,*args,**kwargs):
                start=datetime.time()
                return func(request,*args,**kwargs)
                end = datetime.time()-start
                print('函数执行时间',end)
            return inner
    装饰器源码

      调用方式1

            @auth == 》index=auth(index)
        返回的是index的内存地址,参数可以放置在第二层之后。。。。。
    
    
        装置器之FBV:
            @auth
            def index(request):
            ..........    
    装饰器之FBV

      调用方式2

    #需要导如jango为我们提供的装饰模块
        from django.utils.decorators import method_decorator
        from jango import views
    
        @method_decorator(auth,'dispatch')
        class index(views.View):
            @method_decorator(auth)
            def dispatch(self, request, *args, **kwargs):
                        result = super(inidnao, self).dispatch(request, *args, **kwargs)
                        return result    
        
            @method_decorator(auth)
            def get(self,request):
            .......
            def post(self,request)
    
    #注意:class 需要再urls中,views.index.as_views()
    装饰器之CBV
  • 相关阅读:
    HDU 1203 01背包变形题,(新思路)
    HDU 2955 变形较大的01背包(有意思,新思路)
    HDU 2191(多重背包转换为01背包来做)
    HDU 1114(没有变形的完全背包)
    HDU2546(01背包加一点点变形)
    HDU 1950(LIS)
    c模拟 页式管理页面置换算法之FIFO
    HDU 1257 最少拦截系统(贪心 or LIS)
    路由选择(codevs 1062)
    钓鱼(洛谷 P1717)
  • 原文地址:https://www.cnblogs.com/wangxingwei/p/10750841.html
Copyright © 2020-2023  润新知