一: 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. Lazarus 1.6 增加了新的窗体编辑器——Sparta_DockedFormEditor.ipk

    一下是该控件官网的介绍 "Hello A package for a docked form editor can be found in : components/sparta/docke ...

  2. bootstrap中chosen控件样式有时会冲突

    加上这句话试试 $(".chosen-container").css("width","100%"); 或者 100%改成 100px试试

  3. koji

    fedora koji https://koji.fedoraproject.org/koji/ centos cbs.centos.org/koji/

  4. React 服务器渲染原理解析与实践

    第1章 服务器端渲染基础本章主要讲解客户端与服务器端渲染的概念,分析客户端渲染和服务器端渲染的利弊,带大家对服务器端渲染有一个粗浅认识. 1-1 课程导学1-2 什么是服务器端渲染1-3 什么是客户端 ...

  5. i++与++i的区别及效率

    i++与++i的区别及效率   先看看基本区别:i++ :先在i所在的表达式中使用i的当前值,后让i加1++i :让i先加1,然后在i所在的表达式中使用i的新值 看一些视频教程里面写for循环的时候都 ...

  6. hdu 5652

    India and China Origins Time Limit: 2000/2000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/ ...

  7. 【codeforces 801D】Volatile Kite

    [题目链接]:http://codeforces.com/contest/801/problem/D [题意] 给你一个凸多边形的n个点; 然后允许你将每个点移动到距离不超过D的范围内; 要求无论如何 ...

  8. 超经典SQL练习题,做完这些你的SQL就过关了

    使用方法:我用的数据库是 Ms SQL Server 2008 ,练习时应当自己建数据,自己先思考,切勿急躁翻答案!否则效果减半,做完这些,恭喜你,你的 SQL 就算过关了. 测试表格 --1.学生表 ...

  9. 巧克力棒&&新年的巧克力棒

    巧克力棒 题目描述 LYK 找到了一根巧克力棒,但是这根巧克力棒太长了,LYK 无法一口吞进去.具体地,这根巧克力棒长为 n,它想将这根巧克力棒折成 n 段长为 1 的巧克力棒,然后慢慢享用.它打算每 ...

  10. SpringBoot多数据源改造(二)

    在上一篇的内容中,主要介绍了spring boot项目的多数据源改造的涉及的基本配置及改动.在spring项目中,常用Mybatis做ORM操作数据库,并且分页操作是避免不了的. 因此,这一篇主要介绍 ...