Django之Cookie

Django之Cookie

目录

  • Django之Cookie
    • 介绍
    • Django操作Cookie
      • 设置Cookie
        • 浏览器查看Cookie
      • 获取Cookie
      • 设置超时Cookie
      • 注销Cookie
    • 模拟登录验证
    • 登录验证装饰器
    • 登录验证装饰器-升级版

介绍

当我们上网使用社交媒体或者购物时,浏览器需要通过一种方式来记住我们。想象一下你进入一家商店,店员会将一张带有身份信息的会员卡片递给你,并让你每次进店时都将卡片带在身上,这张小卡片就是Cookie

Cookie是由服务器发送到用户的浏览器中的小型文本文件,它存储在用户的计算机上,方便用户每次访问同一个浏览器页面时能够让服务器对其识别

Django操作Cookie

三板斧中的redirect HttpResponse render对象都可以操作Cookie

设置Cookie

def test(request):
    # response设置为响应对象
    response = HttpResponse()
    # 为该对象绑定Cookie并赋值
    response.set_cookie('name','Paul')
    # 将有Cookie的响应对象返回给web端
    return response
浏览器查看Cookie

image-20240311151248283

获取Cookie

def test2(request):
    my_cookie = request.COOKIES.get('name')
    print(my_cookie)
    return HttpResponse('ok')
# 输出:Paul

设置超时Cookie

# 设置超时Cookie
def test(request):
    response = HttpResponse()
    response.set_cookie('name', 'Paul',max_age=5)
    return response

# 间隔五秒获取两次Cookie
def test2(request):
    my_cookie = request.COOKIES.get('name')
    print(my_cookie)
    time.sleep(5)
    print(my_cookie)
    return HttpResponse('ok')
# 输出:Paul
# 	   None

注销Cookie

def test2(request):
    # 将浏览器重定向的同时注销Cookie
    response = redirect('home')
    response.delete_cookie('name')
    return response

模拟登录验证

def test(request):
    form_obj = UserForm()
    user = request.POST.get('user')
    pwd = request.POST.get('pwd')
    if user =='123123' and pwd == '123123':
        response = HttpResponse('登录成功')
        response.set_cookie('user','123123')
        return response
    return render(request,'app01/register.html',locals())


def test2(request):
    response = redirect('home')
    if request.COOKIES.get('user'):
        return response
    return HttpResponse('请先登录')

登录验证装饰器

def check_cookie(func):
    def inner(request, *args, **kwargs):
        if request.COOKIES.get('user'):
            res = func(request, *args, **kwargs)
            return res
        else:
            return HttpResponse('请先登录')
    return inner

@check_cookie
def test2(request):
    response = redirect('home')
    return render(request, 'app01/home.html')

登录验证装饰器-升级版

def login(request):
    form_obj = UserForm()
    user = request.POST.get('user')
    pwd = request.POST.get('pwd')
    if user == '123123' and pwd == '123123':
    	# 获取Cookie后直接重定向到url中next的路由,如果没有则返回home
        response = redirect(request.GET.get('next', 'home'))
        response.set_cookie('user', '123123')
        return response
    return render(request, 'app01/register.html', locals())


def check_cookie(func):
    def inner(request, *args, **kwargs):
        target_url = request.get_full_path()
        if request.COOKIES.get('user') == '123123':
            res = func(request, *args, **kwargs)
            return res
        else:
            return redirect(f'/app01/test/?next={target_url}')

    return inner


@check_cookie
def home(request):
    return HttpResponse('这里是home界面')

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/459507.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

构造函数、原型、instanceof运算符

通过构造函数创建对象 构造函数是学习面向对象的基础 任何函数都有原型对象 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.…

Linux--基本知识入门

一.几个基本知识 终端: CtrlAltT 或者桌面/文件夹右键,打开终端切换为管理员: sudo su 退出:exit查看内核版本号: uname -a内核版本号含义: 5 代表主版本号;13代表次版本号;0代表修订版本号;30代表修订版本的第几次微调;数字越大表示内核越新. 二.目录…

ADC架构I:Flash转换器

目录 简介 量化噪声模型 量化噪声模型 量化噪声与输入信号之间的相关性容易令人误解 SNR、处理增益和FFT噪底的关系 简介 接触ADC或DAC时您一定会碰到这个经常被引用的公式&#xff0c;用于计算转换器理论信噪比 (SNR)。与其盲目地相信表象&#xff0c;不如从根本上了解其…

单目测距+姿态识别+yolov8界面+车辆行人跟踪计数

yolov5单目测距速度测量目标跟踪&#xff08;算法介绍和代码&#xff09; 1.单目测距实现方法 在目标检测的基础上&#xff0c;我们可以通过计算物体在图像中的像素大小来估计其距离。具体方法是&#xff0c;首先确定某个物体的实际尺寸&#xff0c;然后根据该物体在图像中的像…

Linux编译器gcc/g++的功能与使用

一、程序的生成 首先&#xff0c;我们知道程序的编译分为四步&#xff1a; 1、预处理 2、编译 3、汇编 4、链接 1.1预处理 预处理功能主要包括头文件展开、宏定义、文件包含、条件编译、去注释等。 所谓的头文件展开就是在预处理时候&#xff0c;将头文件内容拷贝至源文…

【优选算法】专题1 -- 双指针 -- 移动零

前言: &#x1f4da;为了提高算法思维&#xff0c;我会时常更新这个优选算法的系列&#xff0c;这个专题是关于双指针的练习 &#x1f3af;个人主页&#xff1a;Dream_Chaser&#xff5e;-CSDN博客 一.移动零&#xff08;easy&#xff09; 描述&#xff1a; 「数组分两块」是⾮…

构建部署_Docker常用命令

构建部署_Docker常见命令 启动命令镜像命令容器命令 启动命令 启动docker&#xff1a;systemctl start docker 停止docker&#xff1a;systemctl stop docker 重启docker&#xff1a;systemctl restart docker 查看docker状态&#xff1a;systemctl status docker 开机启动&…

Netty网络编程(一)

Netty网络编程&#xff08;一&#xff09; 如何进行网络通信 Socket通信是进程通讯的一种方式&#xff0c;通过调用这个网络库的一些API函数可以实现分布在不同主机的相关进程之间的数据交换 网络编程的基本流程是什么&#xff1f; 服务端先创建socket套接字&#xff0c;然后用…

HarmonyOS 非线性容器特性及使用场景

非线性容器实现能快速查找的数据结构&#xff0c;其底层通过 hash 或者红黑树实现&#xff0c;包括 HashMap、HashSet、TreeMap、TreeSet、LightWeightMap、LightWeightSet、PlainArray 七种。非线性容器中的 key 及 value 的类型均满足 ECMA 标准。 HashMap HashMap 可用来存…

L2-002 链表去重(Python)

给定一个带整数键值的链表 L&#xff0c;你需要把其中绝对值重复的键值结点删掉。即对每个键值 K&#xff0c;只有第一个绝对值等于 K 的结点被保留。同时&#xff0c;所有被删除的结点须被保存在另一个链表上。例如给定 L 为 21→-15→-15→-7→15&#xff0c;你需要输出去重后…

18 OpenCV霍夫变换检测直线

文章目录 HoughLines 算子HoughLinesP 算子示例 HoughLines 算子 cv::HoughLines( InputArray src, // 输入图像&#xff0c;必须8-bit的灰度图像 OutputArray lines, // 输出的极坐标来表示直线 double rho, // 生成极坐标时候的像素扫描步长 double theta, //生成极坐标时候…

干货|超实用的PMP学习资料

所有PMP备考笔记资料&#xff0c;文末获取&#xff01; 在通过PMP考试之后&#xff0c;我搜集整理了一些适合零基础入门的项目管理资料&#xff0c;想学习PMP的同学可以自取使用哦&#xff01; 有相关工作经验&#xff08;项目经理/产品经理/技术岗&#xff09; 有相关工作经…

解决ubuntu 22.04新内核6.5.0-15无法编译NVIDIA显卡驱动

这里的新内核应该包括6.5.*系列的 文章目录 遇到的问题&#xff1a; 遇到的问题&#xff1a; 今天我在安装NVIDIA显卡驱动发现了一个问题&#xff0c;主要日志如下所示&#xff1a; make[3]: *** [scripts/Makefile.build:251: /tmp/selfgz1310041/NVIDIA-Linux-x86_64-550.5…

【研发日记】Matlab/Simulink技能解锁(一)——在Simulink编辑窗口Debug

文章目录 前言 时间阈值断点 信号阈值断点 周期步进 Signal Value Lable Data Inspector 分析和应用 总结 前言 近期在一些研发项目中使用Matlab/Simulink时&#xff0c;遇到了挺多费时费力的事情。所以利用晚上和周末时间&#xff0c;在这些方面深入研究了一下&#x…

网站被挂马劫持的解决办法

首先&#xff0c;应该检查网站的DNS记录&#xff0c;以确定是否有人修改了DNS记录。如果发现有人修改了DNS记录&#xff0c;应该立即更改DNS记录&#xff0c;以恢复网站的正常访问。此外&#xff0c;应该检查网站的源代码&#xff0c;以确定是否有人植入了恶意代码。如果发现有…

面试常问,ADC,PWM

一 PWM介绍 pwm全名&#xff08;Pulse Width Modulation&#xff09;&#xff1a;脉冲宽度调制 在具有惯性的系统中&#xff0c;可以通过对一系列脉冲的宽度进行调制&#xff0c;来等效地获得所需要的模拟参量&#xff0c;常应用于电机控速等领域。PWM一定程度上是数字到模拟…

labview技术交流-判断两个数组的元素是否完全相同

问题来源 分析并判断两个一维数组中包含的元素是否完全相同&#xff0c;不考虑索引顺序。比如说[1,5,7,3]和[3,5,7,1]是完全相同的两个一维数组&#xff0c;那[1,5,7,3]和[5,7,1,4]就不是相同的数组。结合我给出的示例&#xff0c;大家有没有什么思路呢&#xff1f; 思路分析 …

安装nginx

Nginx ("engine x") 是一个高性能的HTTP和反向代理服务器&#xff0c;特点是占有内存少&#xff0c;并发能力强&#xff0c;事实上nginx的并发能力确实在同类型的网页服务器中表现较好&#xff0c;中国大陆使用nginx网站用户有&#xff1a;百度、京东、新浪、网易、腾…

为什么海外服务器租用价格差异很大?

海外服务器租用价格的差异很大程度上源于多个因素的综合影响。这些因素包括但不限于服务器的硬件配置、带宽和流量、区域节点、服务商的定价策略、市场需求与供应关系&#xff0c;以及服务器的租用期限等。下面我们将逐一分析这些因素如何影响海外服务器租用价格。 硬件配置。服…
最新文章