Python学习,cookie和session

用户登录, 未登录不能访问指定页面

基于cookie实现

保存在用户浏览器端的键值对, 向服务端发请求时会自动携带

def login(request):

    data = redirect('...')
    data.set_cookie()

    request.COOKIES.get('xx')
    return data

cookie的三个参数:

key,value='',max_age=None

应用场景:

  • 用户认证
  • 投票
  • 每页默认显示多少数据

基于session实现(推荐)

依赖cookie

是一种存储数据的方式, 依赖于cookie, 实现本质:
用户向服务端发送请求, 服务端做两件事:
生成随机字符串;
为此用户开辟一个独立的空间来存放当前用户独有的值.

在空间中如何设置值:

request.session['x1'] = 123
request.session['x2'] = 456

在空间中取值:

request.session['x2'] (没有数据会报错)
request.session.get('x2')

视图函数中的业务操作处理完毕, 给用户响应, 在响应时会将随机字符串存储到用户浏览器的cookie中.

应用场景:

  • 用户认证
  • 短信验证过期
  • 权限管理

session中数据是根据用户相互隔离的

通过js设置cookie

document.cookie = 'k1=wy;path=/'

$.cookie('k1','wy222',{path:'/'})

path不同会导致设置不同

path的作用:

  • / , 当前网站中所有的URL都能读取到此值.

  • “”,只能在当前页面访问的到此数据.

  • /index/ ,只能在/index/xxx的网页中查看.

cookie和session的区别

cookie是存储在客户端浏览器上的键值对,发送请求时浏览器会自动携带. session是一种存储数据方式,基于cookie实现,将数据存储在服务端(django默认存储到数据库).其本质是:

用户向服务端发送请求,服务端做两件事:

  • 生成随机字符串;
  • 为此用户开辟一个独立的空间来存放当前用户独有的值.

django和session相关的配置

SESSION_COOKIE_NAME = "sessionid"

SESSION_COOKIE_DOMAIN = None

SESSION_COOKIE_PATH = "/"

SESSION_COOKIE_HTTPONLY = True

SESSION_COOKIE_AGE = 1209600

SESSION_EXPIRE_AT_BROWSER_CLOSE = False

SESSION_SAVE_EVERY_REQUEST = False

...

学Python的过程中,往往因为没有资料或者没人指导从而导致自己不想学下去, 因此特意准备了个QQ群991032883,可以获取源码,解答,学习路线、开发工具等给大家免费使用!
...

django中的session如何设置过期时间

SESSION_COOKIE_AGE = 1209600

django的session默认存储在数据库, 可以放在其他地方吗

  • 小系统: 默认放在数据库
  • 大系统: 缓存(redis)
SESSION_ENGINE ='django.contrib.sessions.backends.file'
SESSION_FILE_PATH = '/sssss/'

缓存(内存)

SESSION_ENGINE ='django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'
CACHES = {'default':
            {'BACKEND':'django.core.cache.backends.locmem.LocMemCache',
             'LOCATION': 'unique-snowflake',
            }
         }

缓存(redis)

SESSION_ENGINE ='django.contrib.sessions.backends.cache'
SESSION_CACHE_ALIAS = 'default'
CACHES = {"default":
           {"BACKEND":"django_redis.cache.RedisCache",
            "LOCATION":"redis://127.0.0.1:6379",
            "OPTIONS":
                {"CLIENT_CLASS":"django_redis.client.DefaultClient",
                 "CONNECTION_POOL_KWARGS":
                    {"max_connections": 100}

                }
            }
          }

操作session


request.session['x1'] = 123
request.session['x2'] = 456

request.session['xx'] (取不到值时报错)
request.session.get('xx')

del request.session['xx']

request.session.keys()
request.session.values()
request.session.items()
request.session.set_expiry(value)
request.session.session_key

tips
orm字段中的verbose_name

目前当注释用

以后在model form中和form中用

路由系统中加入终止符$防止url截取

用户名和密码监测

XXXX.first()

XXXX.exists()

模板查找顺序

先:根目录templates
后:根据app注册顺序去每个app的template中找

Original: https://blog.csdn.net/sehun_sx/article/details/123830133
Author: sehun_sx
Title: Python学习,cookie和session

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/737181/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 【Django】宝塔面板部署Django+MySQL项目实战

    文章目录 一、环境准备 * 1.1 部署环境 1.2 相关概念 1.3 工作流程 二、部署流程 * 2.1 部署前准备 – 2.1.1 调开发模式为生产模式 2.1.2…

    Python 2023年8月4日
    058
  • 新冠疫情数据采集,分析及其可视化

    新冠疫情数据采集,分析及其可视化 文章目录 新冠疫情数据采集,分析及其可视化 前言 一、数据采集与清洗 二、数据可视化 * 1.历史新增确诊与累计确诊条形图 2.6月25日个省份疫…

    Python 2023年8月2日
    072
  • 开发必备技术–docker(一)

    docker是我们开发过程中,进行项目环境部署,开发,上线的时候经常使用到的一个实用工具。不管是什么项目也好,我们肯定是必不可少的。尤其是现在和卷王比拼的时代,Java的开发标准都…

    Python 2023年10月11日
    045
  • numpy的max(), argmax(), min(), argmin()函数

    目录 一、max()函数 二、argmax()函数 (1)二维数组 (2)三维数组 min()、argmin()函数类似,这里不做赘述 一、max()函数 简单来说就是求array…

    Python 2023年8月25日
    045
  • 接口自动化-pytest框架

    unittest是python自带的单元测试框架,它封装了一些校验返回的结果方法和一些用例执行前的初始化操作,使得单元测试易于开展,因为它的易用性,一般拿它来做功能测试和接口测试,…

    Python 2023年9月14日
    042
  • 我做过的Python30道练习题

    练习题 1 要求输出成绩等级A、B、C、D、E, 其中90-100分为A,80-89分为B,70-79分为C,60-69分为D,60分以下为E。 要求:– 用If语句实…

    Python 2023年10月31日
    051
  • mac python3.8怎样安装scrapy_【python3】mac下安装Scrapy遇到的错误

    最开始出现的是: pip3 install scrapy 可能是scrapy中的s没有用大写,应该是 pip3 install Scrapy 然后安装的时候又出现一个新的问题: C…

    Python 2023年10月6日
    041
  • 【前端必会】tapable、hook,webpack的灵魂

    背景 什么是tapable、hook,平时做vue开发时的webpack 配置一直都没弄懂,你也有这种情况吗? 还是看源码,闲来无聊又看一下webpack的源码,看看能否找到一些宝…

    Python 2023年10月20日
    035
  • scrapy+flask+html打造搜索引擎

    目录 1.预备知识 2.抓取CSDN数据接口 * 2.1 查看CSDN搜索引擎主页 2.2测试CSDN搜索引擎的功能 2.3查看更多相关文章的信息 2.4抓取ajax异步请求数据 …

    Python 2023年10月3日
    045
  • Python 元类详解

    一、Type介绍 在Python中一切皆对象,类它也是对象,而元类其实就是用来 创建类的对象(由于一切皆对象,所以元类其实也是一个对象)。 先来看这几个例子: 例1: In [1]…

    Python 2023年5月23日
    078
  • pandas计算某列每行带有分隔符的数据中包含特定值的次数

    某次做一个数据的处理,要计算用户的粉丝数量,数据集大概是这样的: 传播节点微博用户id关注用户idsae26e5e3db7626dcaf6819ce5492d534″0…

    Python 2023年8月7日
    060
  • pandas常用指令整理

    pandas指令整理 本文旨在记录自己学习过程中遇到的一些常见代码,日后会进行日常维护,如果有幸被同样在学习的朋友看到还请批评指正。如果碰巧对你提供了一些帮助,那我也荣幸万分。 p…

    Python 2023年8月8日
    054
  • (四)Python PyTest 用例执行排序与常用指令-持续更新

    可以通过编写自定义插件或使用 html插件来获取用 结果。 使用 html插件可以将测试结果生成HTML报告,其中包含每个测试用 结果、运行时间、失败原因等信息。可以通过以下命令安…

    Python 2023年9月14日
    052
  • 字符编码与文件操作

    1,字符编码 2,文件操作 单位换算:8bit = 1Bytes 1024Bytes = 1KB 1024KB = 1MB 1024MB = 1GB 1024GB = 1TB 10…

    Python 2023年6月12日
    047
  • 如何使用zx编写shell脚本

    在这篇文章中,我们将学习谷歌的zx库提供了什么,以及我们如何使用它来用Node.js编写 shell脚本。然后,我们将学习如何通过构建一个命令行工具来使用zx的功能,帮助我们为新的…

    Python 2023年10月14日
    072
  • Django 聚合分组F与Q查询及choices

    需要导入模块:from django.db.models import Max, Min, Sum, Count, Avg 关键语法:aggregate(聚合结果别名 = 聚合函数…

    Python 2023年6月9日
    058
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球