学习笔记,仅供参考,有错必究


文章目录

  • cookies和session
    • cookies
      • 关于自动登录
      • HttpResponse 关于cookie的添加修改删除
      • Django中关于cookie的使用
      • 获取cookie
      • 举个例子

cookies和session

cookies

cookies是保存在客户端浏览器上的存储空间,通常用来记录浏览器端的信息和当前连接的确认信息;cookies 在浏览器上是以键-值对的形式进行存储的,键和值都是以ASCII字符串的形式存储(不能是中文字符串);在Django 服务器端设置浏览器的COOKIE必须通过 HttpResponse对象来完成。

注意,cookies跟域名相关,也就说如果我们在网站A获取了cookies,那么这个cookies在另一个网站B就无效了。同时,如果我们在网站A拿到了一个cookies,在此之后,无论我们访问网站A的哪个网页,都会带着这个cookies(在该cookies过期之前)。

关于自动登录

一般情况下,在登录某网站时会用到cookies,比如,我们在登录微博时,如果点击记住我,那么我们的浏览器端就会以cookie的形式记住用户名和密码,下次登录时,我们的账户和密码就会被自动填入文本框,我们就不需要再输入一次了:

HttpResponse 关于cookie的添加修改删除

  • 添加和修改cookie
HttpResponse.set_cookie(key, value='', max_age=None, expires=None)
#key:cookie的名字(最好别用中文)
#value:cookie的值(最好别用中文)
#max_age:cookie存活时间, 以秒为单位(默认为永远存活)
#expires:具体过期时间, 比如2021年1月1日前有效datatime(2021,1,1)
  • 删除cookie
HttpResponse.delete_cookie(key)
#key为Cookie的键
#删除指定的key的Cookie, 如果key不存在则什么也不发生。

Django中关于cookie的使用

  • 方法1:通过HttpResponse将cookie保存进客户端

用法:

from django.http import HttpResponse
resp = HttpResponse()
resp.set_cookie('cookies名', cookies值, 超期时间)
  • 方法2:使用render对象将cookie保存进客户端

用法:

from django.shortcuts import render
resp = render(request,'xxx.html',locals())
resp.set_cookie('cookies名', cookies值, 超期时间)
  • 方法3: 使用redirect对象将cookie保存进客户端

用法:

from django.shortcuts import redirect
resp = redirect('/')
resp.set_cookie('cookies名', cookies值, 超期时间)

获取cookie

我们可以通过request.COOKIES(请求里的Cookies对象) 绑定的字典(dict) 获取客户端的COOKIES数据:

value = request.COOKIES.get('cookies名', '没有值')
print("cookies名 = ", value)

举个例子

我们创建一个新项目mywebsite_bookstore,在项目下添加两个应用(bookstore, userinfo),创建一个模板文件templates,在mysql中创建新数据库mybookstore,再进行一系列配置,这个过程我就不演示了。

配置完成之后,我们在主urls.py中添加两个路由:

from django.urls import re_path
from django.contrib import admin
from django.conf.urls import include
from . import viewsurlpatterns = [re_path(r'^admin/', admin.site.urls),re_path(r'^bookstore/', include('bookstore.urls')),re_path(r'^test_cookie/', views.test_cookie),re_path(r'^show_cookie/', views.show_cookie),re_path(r'^userinfo/', include('userinfo.urls')),
]

在主视图文件views.py中添加两个视图函数:

def test_cookie(request):resp = HttpResponse("OK")return respdef show_cookie(request):dic = request.COOKIESreturn HttpResponse(str(dic))

向http://127.0.0.1:8000/show_cookie/发起请求:

我们看到了一个字典,这个字典就是浏览器给予服务器的cookie信息。

我们在Chrome浏览器的开发者工具中,也可以查看和操作浏览器端所有的Cookies 值。

我们打开开发者工具(DevTool),依次进入Application、Storage、Cookies:

我们也可以在DevTool中将这个Cookie删除,删除后,我们再刷新一下http://127.0.0.1:8000/show_cookie/,发现只剩下一个空字典了:

这时,若我想添加一个Cookie,那我们可以在views.py中操作:

def test_cookie(request):resp = HttpResponse("OK")resp.set_cookie('myschool', 'goatbishop')return resp

我们向http://127.0.0.1:8000/test_cookie/发起请求:

再向http://127.0.0.1:8000/show_cookie/发起请求:

查看DevTool,发现多了一个Cookie:

我再设置cookie存活时间为10秒:

def test_cookie(request):resp = HttpResponse("OK")resp.set_cookie('myschool', 'goatbishop', max_age=10)return resp

我们先向http://127.0.0.1:8000/test_cookie/发起请求,再向http://127.0.0.1:8000/show_cookie/发起请求:

等待11s,我们刷新DevTool,发现这个Cookie消失了:

这时,我们设置cookie存活时间为7天(7$\times242424\times606060\times$60s):

def test_cookie(request):resp = HttpResponse("OK")resp.set_cookie('myschool', 'goatbishop', max_age=7*24*60*60)return resp

首先,向http://127.0.0.1:8000/test_cookie/发起请求,得到新cookie后,我们再利用响应对象的delete_cookie方法将该cookie删除:

def test_cookie(request):resp = HttpResponse("OK")#删除和Cookiesresp.delete_cookie('myschool')return resp

Django(part36)--cookies相关推荐

  1. 【Django】Django中cookies、session和token实现demo

    一.cookies和session HTTP是一种无状态的协议,客户端向服务端发起请求,在通过用户名和密码进行用户认证后,HTTP协议不会记录认证状态,所以用户在下次请求时还是需要再次认证.为了能够保 ...

  2. Skr-Eric的Django课堂(七)——Django的cookies和session

    cookies 和 session 1.cookies 1.django 中使用 cookies 1.设置cookies的值(将数据保存到客户端) 语法: 响应对象.set_cookie(key,va ...

  3. Django(part38)--制作登录界面

    学习笔记,仅供参考,有错必究 文章目录 制作登录界面 第一步 第二步 第三步 第四步 制作登录界面 我们基于博客Django(part36)–cookies的mywebsite_bookstore项目 ...

  4. Django框架设置cookies与获取cookies操作详解

    本文实例讲述了Django框架设置cookies与获取cookies操作.分享给大家供大家参考,具体如下: 在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是req ...

  5. python后台返回cookie_Django框架设置cookies与获取cookies操作详解

    本文实例讲述了Django框架设置cookies与获取cookies操作.分享给大家供大家参考,具体如下: 在Django里面,使用Cookie和Session看起来好像是一样的,使用的方式都是req ...

  6. django关闭浏览器,怎样清除 cookies 和 session

    django关闭浏览器,怎样清除 cookies 和 session 设 置 Cookie: def cookie_set(): response = HttpResponse(" 设置 C ...

  7. django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066

    django 中的聚合和分组 F查询 Q查询 事务cookies和sessions 066 1 聚合和分组 聚合:对一些数据进行整理分析 进而得到结果(mysql中的聚合函数) 1aggregate( ...

  8. Django从理论到实战(part36)--QuerySet转换SQL

    学习笔记,仅供参考,有错必纠 参考自:Django打造大型企业官网–Huang Y:官方文档 QuerySet转换SQL 生成一个QuerySet对象并不会马上转换为SQL语句,比如我们获取Book表 ...

  9. Django:保持会话状态cookies和session(1)

最新文章

  1. 云+社区小程序知识周,等你来挑战!
  2. asyncio简单入门(二)
  3. Monte Carlo仿真方法的基本思想及其特点
  4. python下载源_python解决使用镜像源来安装包
  5. C++语言中std::array的神奇用法总结,你需要知道!
  6. 让程序暂停几秒_如何构建一个简单的Python提醒应用程序
  7. 94. Ext.MessageBox消息框
  8. IE6-IE9使用JSON、table.innerHTML 问题
  9. 三种方式解决vue中v-html元素中标签样式
  10. 70.(cesium篇)cesium接入天地图影像与注记(经纬度)
  11. 【应用笔记】【AN002】通过iTool2基于MinGW平台读写EEPROM
  12. 云堡垒机和传统堡垒机对比
  13. MultipartFile 转 File
  14. java 笔记本i7 i5_笔记本i5处理器和i7处理器哪个好
  15. 04 CSS样式案例
  16. sqlserⅴer随机函数_Sql server自动生成拼音的函数
  17. 从MUD到MMO——虚拟世界发展简史以及未来可能性的杂谈
  18. 马云:未必每个企业都要转型,但每个企业都要升级 | 杭州启用全国首个基于人工智能的数据资源平台
  19. aws ec2 重置密码和密钥对
  20. Android头像上传实战模拟

热门文章

  1. arcball原理 旋转视图 关键点总结 及代码
  2. 计算机专业都学什么科,大学本科计算机专业都有什么科目?
  3. python 使用文本注解绘制树节点_实用篇 | 34 个最火的 Python 开源框架
  4. 计算机网络钟提供并管理,在计算机网络中通常把提供并管理共享资源的计算机称为...
  5. oracle服务器重启后监听启动
  6. java 的HashMap底层数据结构
  7. 预定义异常 - PHP手册笔记
  8. centos mysql 新增用户
  9. Quartus和ISErom文件格式
  10. openstack安装rabbitmq-server消息队列时出现错误