Django Views 7.Cookie语法

本节课讲Cookie,饼干的意思,上次讲HttpResponse的时候没讲的地方

设置Cookie

将数据保存在客户端的应用,例如购物车

urls的配置

urlpatterns = [
    path('set_cookie', views.set_cookie_view),
    path('show_all3', views.show_all3_view),
]

models的配置

def set_cookie_view(request):
	response = HttpResponse()
	response.set_cookie('uname','zhangsan')
    return response

进入,发现在response有,刷新,发现request里也有了cookie
在这里插入图片描述
进一个错误地址,发现报错的信息里还是有cookie值,说明已经保存在客户端了
在这里插入图片描述
关闭浏览器重启,发现错误地址没有cookie

默认放缓存即内存,关闭浏览器后就没有相应的内存,就没有cookie了

设置有效时间

看set_cookie源代码参数,有个max_age,单位是秒

response.set_cookie('uname','zhangsan',max_age=24*60*60)

如果设置一天,可以写计算式,比写计算结果更直观

可以看到还有过期时间expires
这个参数也可以自己写,

import datetime
response.set_cookie('uname','zhangsan',expires=datetime.datetime.today()+datetime.timedelta(days=2))

在规定的页面存储数据

例如购物车,我们只想在购物车页面访问时候有cookie
后面地址path写一个hello,只在这里保存缓存

import datetime
response.set_cookie('uname','zhangsan',expires=datetime.datetime.today()+datetime.timedelta(days=2), path='/stu/hello/')

访问该hello页面,会报错,但是能看到缓存信息

在Internet选项,查看缓存,全删了,最小化,刷新,看到hello/文件
把hello删了,就没有cookie了

加密salt

def set_cookie_view(request):
    response = HttpResponse()
    response.set_signed_cookie('uname', 'zhangsan', salt='fdsafdsa', max_age=24 * 60 * 60)
    return response

进页面还是可以出来sname不一样

获取Cookie

配置urls

path('get_cookie', views.get_cookie_view),

配置views

def get_cookie(request):
	str = request.COOKIES.get('uname')
	pwd = request.COOKIES.get('pwd')
	return HttpResponse(str,pwd)

是个字典,通过key可以获取值
可以设置多个

先设置cookie
再获取cookie

解密salt

异或可以加密和解密,刚才的是加过密的,通过加密的get_cookie可以获得解密的信息

def get_cookie(request):
	uname = request.get_signed_cookie('uname',salt='fdsafdsa')
	return HttpResponse(uname)

删除Cookie

  1. 默认关闭浏览器则失效
  2. max_age=-1
  3. expires=datetime.datetime.today()+datetime.timedelta(days=-2))
  4. response.delete_cookie(‘uname’,path=’/stu/hello/’)
    测试下把4放在设置里,则cookie会删掉,找不到值

判断是否有Cookie

def get_cookie_view(request):
    if 'uname' in request.COOKIES:
        uname = request.get_signed_cookie('uname',salt='sdsafdsa')
        return HttpResponse(uname)
    else:
        return HttpResponse('当前Cookie信息不存在')

注意新版python没有COOKIE.has_key的方法,改为in方法

另外加密和解密的salt要一致,否则会报错

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值