一: Cookie
  1.  Cookie是什么?存储在客户端浏览器上的键值对
  2. 原理: 是服务器产生,发给客户端浏览器,浏览器保存起来,下次发请求,会携带这个键值对到服务器

  4. Cookie的覆盖: 先写了一个键值对,后来再写,会把原来的值覆盖掉

  5. cookie使用(**********************)
     1) 写cookie:在Httpresponse这个对象上写  obj.set_cookie(key,value)
     2) 取cookie:从request对象中取,取出来是个字典request.COOKIES
     3) 删除cookie: obj.delete_cookie('name')

urlpatterns = [
url(r'^admin/', admin.site.urls),
# url(r'^login/', views.login),
# url(r'^order/', views.order),
url(r'^shopping/', views.shopping),
url(r'^salt_cookie/', views.salt_cookie), # 盐饼干
url(r'^get_cookie/', views.get_cookie), # 获取饼干
url(r'^delete_cookie/', views.delete_cookie), # 删除饼干 ]

  6. cookie的其他属性
     -加盐cooke

# set_signed_cookie 本质是set_cookie,只不过是在set_cookie的基础上又做了一个处理
# 必须加一个参数salt,这就是加盐,他保证了数据的安全
object.set_signed_cookie('name', 'lqz', salt='')

  -超时时间max_age,传一个秒的时间

# 10秒之后失效 (60*60*24*3)三天失效
object.set_cookie('name', 'prince', max_age=10)
  -超时时间expires,传一个datatime对象
  -path='/',可以设置路径,设置路径之后,path='/index/',只有访问index的时候,才会携带cookie过来
  -domain 设置域名下有效domain='map.baidu.com'
  -secure=False, (默认是false,设置成True浏览器将通过HTTPS来回传cookie)
  -httponly=True 只能https协议传输,无法被JavaScript获取(不是绝对,底层抓包可以获取到也可以被覆盖)

关于 next 登录认证的新写法:

# 旧的login
def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
name = request.POST('name')
pwd = request.POST('pwd')
if name == 'zzd' and pwd == '':
obj = HttpResponse('登陆成功')
obj.set_cookie('is_login', True)
return obj def order(request):
is_login = request.COOKIES.get('is_login')
if is_login:
return HttpResponse('我是订单页面,要先登录才能看我')
else:
return redirect('/login/')
#
#
def shopping(request):
is_login = request.COOKIES.get('is_login')
if is_login:
return HttpResponse('我是购物车,得登录才能看我')
else:
return redirect('/login/')

旧的

# 新版login

# 登录认证装饰器
def login_auth(func):
def inner(request, *args, **kwargs):
url = request.get_full_path()
is_login = request.COOKIES.get('is_login')
if is_login:
res = func(request, *args, **kwargs)
return res
else:
return redirect('/login/?next=%s' % url) return inner def login(request):
if request.method == 'GET':
return render(request, 'login.html')
else:
next = request.GET.get('next')
name = request.POST.get('name')
pwd = request.POST.get('pwd')
if name == 'zzd' and pwd == '': if next:
obj = redirect(next)
else:
obj = redirect('/shopping/') obj.set_cookie('is_login', True)
return obj
else:
return HttpResponse('用户名或密码错误') @login_auth
def order(request):
return HttpResponse('我是订单页面,我得登录才能看') @login_auth
def shopping(request):
return HttpResponse('我是购物车,得登录才能看我')

新的

关于next新写法的意思:

比如我现在需要进入订单页面, 但是需要登录, 这个时候 next 从定向就会帮你跳转到登录界面, 在你输入完正确的用户名和密码之后又帮你重新跳转回订单页面, 所以这就是取出订单页面的地址, 一旦登录成功, 从定向回到原来要访问的地址

Django day14(一) cookie的更多相关文章

  1. Django中的cookie与session

    cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...

  2. Django 中的 cookie 和 session

    一.cookie 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新的 ...

  3. {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session

    Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...

  4. django中操作cookie与session

    cookie 什么是Cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的 ...

  5. django(五):cookie和session

    一.Cookie 1.cookie机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确 ...

  6. 第三百一十二节,Django框架,Cookie

    第三百一十二节,Django框架,Cookie 注意:获取Cookie是在请求对象里处理,设置Cookie是在响应对象里处理 普通Cookieset_cookie()设置普通cookie 参数: ke ...

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

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

  8. 【转】Django中的cookie与session

    转自:https://www.cnblogs.com/chenchao1990/p/5283725.html cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空 ...

  9. Django框架 之 Cookie、Session整理补充

    Django框架 之 Cookie.Session整理补充 浏览目录 Django实现的Cookie Django实现的Session 一.Django实现的Cookie 1.获取Cookie 1 2 ...

随机推荐

  1. C# Request

    string type = Request["type"]; //值为null; //?type= 值为""; //?type=12 值为"12&qu ...

  2. 2019 支付宝App支付 --- PHP

    SDK下载:https://docs.open.alipay.com/54/106370/;联系客服:https://cschannel.alipay.com/newPortal.htm?scene= ...

  3. drf07 过滤 排序 分页 异常处理 自动生成接口文档

    4. 过滤Filtering 对于列表数据可能需要根据字段进行过滤,我们可以通过添加django-fitlter扩展来增强支持. pip install django-filter 在配置文件sett ...

  4. 用 foreach()循环三维数组

    <?php $data = array( 0 => array( '中国' => 'china', '美国' => 'usa', '德国' => ' Germany', ...

  5. bootstrap table分页(前后端两种方式实现)

    bootstrap table分页的两种方式: 前端分页:一次性从数据库查询所有的数据,在前端进行分页(数据量小的时候或者逻辑处理不复杂的话可以使用前端分页) 服务器分页:每次只查询当前页面加载所需要 ...

  6. Sort HDU5884(二分+多叉哈夫曼树)

    HDU5884 Sort 题意:有n个序列要进行归并,每次归并的代价是两个序列的长度的和,要求最终的代价不能超过规定的T,求在此前提下一次能同时进行归并的序列的个数k. 思路:还是太单纯,看完题目一直 ...

  7. 【http反向代理】多个域名指向同一个ip的不同网站解决方法

    一个服务器需要挂载多个项目[重点是都能通过域名访问] 实现原理: 1.当前市面上看到的一些服务器,开放的端口一般都要求为 '80' 端口 所以80端口成了商用端口 2.域名的绑定是绑定一个一般是绑定你 ...

  8. HTML学习笔记之标签进阶

    目录 1.框架 2.表单 3.音频 4.视频 5.文档类型 6.头部元素 7.样式 8.脚本 9.实体 1.框架 使用框架允许我们在同一个浏览器窗口中显示多个页面,其中每份 HTML 文档称为一个框架 ...

  9. linux中文man手册安装

    1.下载源码 源码网址 https://src.fedoraproject.org/repo/pkgs/man-pages-zh-CN/ 下载源码 wget https://src.fedorapro ...

  10. 数据类型与变量(Python学习笔记01)

    数据类型与变量 Python 中的主要数据类型有 int(整数)/float(浮点数).字符串.布尔值.None.列表.元组.字典.集合等. None 每个语言都有一个专门的词来表示空,例如 Java ...