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 ...
随机推荐
- Python培训时长多久可以学会?马哥教育9年经验之谈
在Python成为一门炙手可热的语言之后,很多人也开始准备向这个行业发展.技术入行也就是培训和自学两条路,各有优劣,不过培训因为学习比较系统比较快也受到不少人欢迎. 今天我就来给大家分享一下Pytho ...
- maven常用dos命令
在平常的开发中可能会经常切换开发中的一些工具,有时就会对一些常用的命令给忘记了 这里特别记录下来方便以后使用: 1.查看maven版本:mvn -c 2.一件构建启动Tomcat:mvn tomcat ...
- Perl Connect to Database without password as sysdba
#!/oracle/product/11g/db/perl/bin/perl use lib '/oracle/product/11g/db/perl/lib/site_perl/5.10.0'; u ...
- 使用IDM下载软件下载百度云网盘里的资源,以Chrome浏览器为例
1.下载安装最新版的Chrome浏览器,我是在腾讯软件下载中心下载的,使用普通下载,下载地址:https://dl.softmgr.qq.com/original/Browser/72.0.3626. ...
- 升级 Linux 内核版本(编译源代码)
升级内核版本(自己编译源码) 从 linux 官网 https://www.kernel.org/ 下载内核源码 解压 tar -xvf linux-4.16.8.tar.xz cd linux-4. ...
- python爬虫12 | 爸爸,他使坏,用动态的 Json 数据,我要怎么搞?
在前面我们玩了好多静态的 HTML 想必你应该知道怎么去爬这些数据了 但还有一些常见的动态数据 比如 商品的评论数据 实时的直播弹幕 岛国动作片的评分 等等 这些数据是会经常发生改变的 很多网站就会用 ...
- 学习记录--让我打开另一种思路的SQL
1.显示文章.提交人和最后回复时间 select a.title,a.username,b.adddate from table a, (select max(adddate) adddate fro ...
- vue开发规范
一.简介 团队合作中规范文档是必须的,在多人合作的项目只有定义好一定的编码规范才会使得开发井井有序,代码一目了然,下边将谈一下个人对vue使用规范的一些看法. 二.规范案例 1.组件命名 组件文件名应 ...
- 【Codeforces 1106D】Lunar New Year and a Wander
[链接] 我是链接,点我呀:) [题意] 让你遍历n个节点,访问过的节点不操作. 如果是没有访问过的点,那就把它加到序列的末尾. 问你形成的最小字典序的序列是多少. [题解] 显然每次找最小的标号 用 ...
- 允许MS SqlServer远程连接
实际问题: 服务器192.168.0.103上的SQL Express数据库实例,局域网内其余机器的Sql Server Management Studio都无法连接. 在本机上,可以用“.\SqlE ...