Cookie
            1.如果没有cookie,那么所有的网站都不能登录
            2.客户端浏览器上的文件,keyvalues形式存储的,类似字典
            3.登录时首先要获取Cookie,Cookie中没有服务器需要的字符串时,用户必须发送用户名密码,认证成功之后,服务器会在客户端Cookie中插入一段字符串,下次验证时,直接获取字符串,实现免登录
 
 
            简单Cookie设置:
                登录成功后,在返回HTML页面时,带上Cookie
                在views函数中
                def login(request):
                    response = redirect( '/home/' )  |  render( request,'home.html' )  | HttpResponse( HTML_string )
                    response.set_cookie( 'username',username,... )         #简单例子不加密,这种设置关闭浏览器cookie失效
                    response.set_signed_cookie(key,value,salt='加密盐',..)    #设置值的时候需要3个参数
                def home(request):
                    u = request.COOKIES.get('username')                   #获取COOKIES内容
                    u = request.get_signed_cookie("user",salt="加密盐")    #获取加密后的cookie内容
 
 
            set_cookie的一些其他参数:
                key, 键
                value='', 值
                max_age=None, 超时时间 秒级
                expires=None, 超时时间 到某年某月某日到期
                    current_date = datetime.datetime.utcnow()    #当前时间
                    date = current_date + datetime.timedelta(seconds=5)
                    response.set_cookie(  expires=date )
 
                path='/', Cookie生效的路径,/ 表示根路径,特殊的:跟路径的cookie可以被任何url的页面访问
                    path='/index'  ----> 只能在http://xxxx/index访问
 
                domain=None, Cookie生效的域名,只能给自己设置
                secure=False, https传输
                httponly=False 只能http协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)
                删除cookie
                response.set_cookie(  'v',null )
        
        jQuery.COOKIE便捷设置cookie
                $.cookie( 'k1','v1' )   #设置
                $.cookie( 'k1' )         #获取 
      实例用户动态改变每页列表数(使用cookie传参):
                every_page_count = int(request.COOKIES.get('every_page_count',10))
        如果只想让every_page_count在某个页面生效
            response = render(request,'page.html',{'list':list,'page_str':page_str,'path_info':request.path_info})
        JS代码
     

function choice(ths) {
var v = $(ths).val();
$.cookie('every_page_count',v,{'path':"/a/pages"});
var url = '{{ path_info }}?pid='+1; #每改变一次列表数就返回首页
location.href=url;
}

  

                    一般来说用cookie做认证,就必须要在每个函数里加入相同的验证代码,这里可以用装饰器简化开发代码
                    FBV装饰器
                    def auth(func):
                        def inner(request,*args,**kwargs):
                            v = request.COOKIES.get('is_login')
                            if not v:
                                return redirect( '/login/' )
                            return func(request,*args,**kwargs)
                        return inner
 
                    @auth
                    def login():
                            ......
                    
                    CBV装饰器
                        1.只对当请求类型(get)做用户认证
                            不能简单使用自己写的装饰器,要使用Django提供的装饰器
                            from django.utils.decorators import method_decorator
                            class Oreder(views.View):
                            @method_decorator(auth)
                            def get(self,request):
                                ...
                        2.对所有的请求类型都做认证,利用dispatch方法
                            @method_decorator(auth)
                            def dispatch(self,request,*args,**kwargs):
                                return super(Order,self).dispatch(request,*args,**kwargs)
 
                        3.利用装饰器提供的方法简化代码
                            @method_decorator(auth,name='dispatch')
                   
 

Django学习-15-Cookie的更多相关文章

  1. Django学习之Cookie和Session

    一.Cookie 1.Cookie的由来 2.什么是Cookie 3.Cookie的原理 4.查看Cookie 二.Django中操作Cookie 1.获取Cookie 2.设置Cookie 3.删除 ...

  2. Django学习手册 - cookie / session

    cookie """ cookie属性: obj.set_cookie(key,value,....) obj.set_signed_cookie(key,value,s ...

  3. django学习之- Cookie

    cookie:客户端游览器上的一个文件,以键值对进行保存,类似字典{'k':'sfs'},与服务器端没有关系,当游览器访问服务器时候,服务器会生成一个随机字符串保存在cookie中返回给客户端,这样当 ...

  4. Django 学习之cookie与session

    一.cookie和session的介绍 cookie不属于http协议范围,由于http协议无法保持状态,但实际情况,我们却又需要“保持状态”,因此cookie就是在这样一个场景下诞生. cookie ...

  5. django学习-15.ORM查询方法汇总

    1.前言 django的ORM框架提供的查询数据库表数据的方法很多,不同的方法返回的结果也不太一样,不同方法都有各自对应的使用场景. 主要常用的查询方法个数是13个,按照特点分为这4类: 方法返回值是 ...

  6. django 学习-15 .Django文件上传(用户注册)

    1.vim blog/views.py from django.shortcuts  import  render_to_responsefrom django.http   import HttpR ...

  7. Python学习---django下的cookie操作 180201

    什么是Cookies 什么是Cookies cookies设置的原因: 1. http请求的无记忆性: 2.加快访问速度  3. 减少服务器压力 cookies特点: cookies保存在客户端浏览器 ...

  8. Django学习笔记(5)——cookie和session

    一,前言 1.1,什么是会话跟踪技术 在JavaWeb中,客户向某一服务器发出第一个请求开始,会话就开始了,直到客户关闭了浏览器会话结束.在一个会话的多个请求中共享数据,这就是会话跟踪技术. 例如在一 ...

  9. Django学习笔记之URL与视图cookie和session

    cookie和session cookie:在网站中,http请求是无状态的.也就是说即使第一次和服务器连接后并且登录成功后,第二次请求服务器依然不能知道当前请求是哪个用户.cookie的出现就是为了 ...

  10. Django学习笔记之Cookie、Session和自定义分页

    cookie Cookie的由来 大家都知道HTTP协议是无状态的. 无状态的意思是每次请求都是独立的,它的执行情况和结果与前面的请求和之后的请求都无直接关系,它不会受前面的请求响应情况直接影响,也不 ...

随机推荐

  1. SpringMVC源码情操陶冶-DispatcherServlet简析(二)

    承接前文SpringMVC源码情操陶冶-DispatcherServlet类简析(一),主要讲述初始化的操作,本文将简单介绍springmvc如何处理请求 DispatcherServlet#doDi ...

  2. java异常丢失及异常链

    1.Java中异常丢失的情况: 先定义三个异常: public class ExceptionA extends Exception { public ExceptionA(String str) { ...

  3. VUE 2.0 引入高德地图,自行封装组件

    1. 高德地图官网 申请帐号, 申请相应(JavaScript API)的 Key 2. 在项目中引入, 这里和其他的引入不同的是 直接在 index.html, 不是在 main.js 引入, 博主 ...

  4. Typora最常用快捷键

    插入图片:直接拖动到指定位置即可或者ctrl+shift+i 插入链接:ctrl+k 对于本地图片,我们可以直接拖进来 双回车可以回到行首

  5. mac 上node.js环境的安装与测试

    如果大家之前做过web服务器的人都知道,nginx+lua与现在流行的Node.js都是可以做web服务器的,前者在程序的写法和配置上要比后者麻烦,但用起来都是差不多.在这里建议大家如果对lua脚本语 ...

  6. 一个简单的定时表达式(HH:mm:ss)解析

    前言 为客户开发了一个日志监控程序,监听各频道是否正常工作.其中有一个功能是这样的,当所有频道正常运行一段时间后,语音提示值班人员系统运行正常.一开始,想法比较简单,设置了一个变量,在线程不断轮询的过 ...

  7. Caused by: java.lang.ClassCastException: org.springframework.web.SpringServletContainerInitializer cannot be cast to javax.servlet.ServletContainerInitializer错误解决办法

    严重: Failed to initialize end point associated with ProtocolHandler ["http-bio-8080"] java. ...

  8. 关于UIButton嵌入到UIView点击无反应问题的解决方法和delegate的简单用法示例(转载)

    做项目封装UIView的时候碰到的问题,没想到有个哥们儿还写成博客,特此收藏! 问题是这样的,几个界面用到同一个自定义返回按钮,于是就想着把这个按钮单独封装起来,添加一个UIView类,在里面自定义U ...

  9. tcp/ip 卷一 读书笔记(5)arp和rarp 同网段和不同网段之间的通信过程

    arp和rarp 同网段和不同网段之间的通信过程 IPv6中已经没有arp rarp协议,所以这里都是IPv4. 链路层使用以太网地址来确定目的地址,应用则常使用ip地址通信 arp协议是指从ip地址 ...

  10. tcp/ip 卷一 读书笔记(1)tcp/ip 概述

    TCP/IP协议概述 术语 广域网 WAN 局域网 LAN TCP/IP四层网络模型 TCP/IP通常被认为是一个四层协议系统 网络接口层 包括arp,rarp协议,包括操作系统中的网卡驱动程序和对应 ...