Django day14(一) cookie
一: 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的更多相关文章
- Django中的cookie与session
cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空间中. 在一次请求和下一次请求之间没有任何状态保持,我们无法根据请求的任何方面(IP地址,用户代理等)来识别来 ...
- Django 中的 cookie 和 session
一.cookie 由于HTTP协议是无状态的,而服务器端的业务必须是要有状态的.Cookie诞生的最初目的是为了存储web中的状态信息,以方便服务器端使用.比如判断用户是否是第一次访问网站.目前最新的 ...
- {Django基础八之cookie和session}一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session
Django基础八之cookie和session 本节目录 一 会话跟踪 二 cookie 三 django中操作cookie 四 session 五 django中操作session 六 xxx 七 ...
- django中操作cookie与session
cookie 什么是Cookie Cookie具体指的是一段小信息,它是服务器发送出来存储在浏览器上的一组组键值对,下次访问服务器时浏览器会自动携带这些键值对,以便服务器提取有用信息. Cookie的 ...
- django(五):cookie和session
一.Cookie 1.cookie机制 会话(Session)跟踪是Web程序中常用的技术,用来跟踪用户的整个会话.常用的会话跟踪技术是Cookie与Session.Cookie通过在客户端记录信息确 ...
- 第三百一十二节,Django框架,Cookie
第三百一十二节,Django框架,Cookie 注意:获取Cookie是在请求对象里处理,设置Cookie是在响应对象里处理 普通Cookieset_cookie()设置普通cookie 参数: ke ...
- Python学习---django下的cookie操作 180201
什么是Cookies 什么是Cookies cookies设置的原因: 1. http请求的无记忆性: 2.加快访问速度 3. 减少服务器压力 cookies特点: cookies保存在客户端浏览器 ...
- 【转】Django中的cookie与session
转自:https://www.cnblogs.com/chenchao1990/p/5283725.html cookie与session的实现原理 HTTP被设计为”无状态”,每次请求都处于相同的空 ...
- Django框架 之 Cookie、Session整理补充
Django框架 之 Cookie.Session整理补充 浏览目录 Django实现的Cookie Django实现的Session 一.Django实现的Cookie 1.获取Cookie 1 2 ...
随机推荐
- win10 ubuntu18双系统环境搭建
感谢前辈辛勤总结,根据这3篇文章成功配置了双系统 https://blog.csdn.net/qq_24624539/article/details/81775635 https://blog.csd ...
- 让System.Drawing.Bitmap可以在linux运行
.net core的bitmap使用的是以下类库,但无法在linux运行 https://github.com/CoreCompat/CoreCompat 在linux运行需要安装runtime.li ...
- mybatis 简单的入门实例
第一步:添加mybaties的架包 第二步:配置mybaties的文件 <?xml version="1.0" encoding="UTF-8" ?> ...
- Django - 路由对应关系
1.对url路由关系命名,以后可以根据此名称,生成自己想要的url urls.py中: url('^fdsaafdf(\d+)/',views.index,name='indexx') url('^f ...
- [如何在mac下使用gulp] 2. gulp模块的常用方法
常用的gulp模块方法有: gulp.src() gulp.src('client/one.js'); //指定明确的要处理文件 gulp.src('client/*.js'); //处理client ...
- MySQL(端口3306)
MySQL(二进制)安装: 下载地址:http://dev.mysql.com/get/Downloads/MySQL-5.5/mysql-5.5.49-linux2.6-x86_64.tar.gz ...
- 第二节:Series基本属性及方法(下)
- hdu 3500 DFS(限定)
Fling Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 65535/65535 K (Java/Others)Total Submi ...
- [JZOJ4687]奇袭
[JZOJ4687]奇袭 题目 由于各种原因,桐人现在被困在Under World(以下简称UW)中,而UW马上要迎来最终的压力测试——魔界入侵. 唯一一个神一般存在的Administrator被消灭 ...
- C结构体里的冒号
unsigned m_ScrollType : 3; //uint型,占3bit; unsigned m_ScrollDirection ...