Django5之视图装饰器

本节主要介绍Django框架视图层中装饰器的内容。视图装饰器用来对视图函数进行相关的控制操作,实现了对各种HTTP特性的支持功能。

4.5.1  允许HTTP方法

在Django框架中,位于django.views.decorators.http模块的装饰器被用来限制可以访问该视图的HTTP请求方法。如果请求的HTTP方法不是指定的方法之一,则返回django.http.HttpResponseNotAllowed响应。

装饰器语法:require_http_methods(request_method_list)。

功能描述:获取该视图仅能接收的独特请求方式。

关于require_http_methods()装饰器的使用方法,可参考下面的代码实例。

【代码4-52】

01  from django.views.decorators.http import require_http_methods
02  
03  # 请求方法应该是大写
04  @require_http_methods(["GET", "POST"])
05  def my_view(request):
06      # 现在可以假设只有GET或POST请求才能到达这里
07      # ...
08      pass

【代码分析】

在第01行代码中,通过调用django.views.decorators.http模块(装饰器)导入了require_http_methods对象。

在第04行代码中,通过注入字符@拼接require_http_methods对象的操作,定义了请求方式参数“["GET", "POST"]”。注意,请求方式参数必须为大写字母。

在第05~08行代码中,定义了一个视图方法my_view()。由于第04行代码中注入语法的定义,只有GET请求方式和POST请求方式可以访问该视图方法。

此外,在django.views.decorators.http模块中还定义了几个关于装饰器require_http_methods()方法的简化版本,具体说明如下:

1)require_GET()方法

该方法是require_http_methods()的简化版本,功能上只允许GET请求方式的访问。在django.views.decorators.http模块中定义。

2)require_POST()方法

该方法是require_http_methods()的简化版本,功能上只允许POST请求方式的访问。在django.views.decorators.http模块中定义。

3)require_safe()方法

该方法只允许安全的请求类型,也就是GET请求方式和HEAD请求方式的访问。在django.views.decorators.http模块中定义。

4.5.2  gzip_page()方法

在浏览器支持的情况下,gzip_page()装饰器方法用于对视图的响应内容进行gzip视图压缩,该方法在django.views.decorators.gzip模块中定义。

装饰器语法:gzip_page()。

功能描述:该方法依据不同的响应头(header)进行缓存设置,从而保证基于在Accept-Encoding响应头上的存储。

4.5.3  其他装饰器

1. Vary headers装饰器

Vary headers装饰器用于控制基于特定请求头(header)上的缓存,该方法在django.views.decorators.vary模块中定义。具体包括以下两个方法:

装饰器语法:vary_on_cookie(func)。

装饰器语法:vary_on_headers(*headers)。

2. Caching装饰器

Caching装饰器用于控制服务器端和客户端上的缓存,该方法在django.views.decorators.cache模块中定义。具体包括以下两个方法:

装饰器语法:cache_control(**kwargs)。

该装饰器方法通过添加关键字参数来弥补HTTP响应的Cache-Control请求头。

装饰器语法:never_cache(view_func)。

该装饰器方法通过为Cache-Control请求头添加一组参数(max-age=0, no-cache, no-store, must-revalidate, private),来表明视图页面永远不会被缓存。

3. Conditional view processing装饰器

Conditional view processing装饰器用于控制特定视图函数上的缓存行为,该方法在django.views.decorators.cache模块中定义。具体包括以下3个方法:

装饰器语法:condition(etag_func=None, last_modified_func=None)。

装饰器语法:etag(etag_func)。

装饰器语法:last_modified(last_modified_func)。

本书1-7章样章及配套资源下载链接:

https://pan.baidu.com/s/1OGmhHxEMf2ZdozkUnDkAkA?pwd=nanc 

源码、PPT课件、教学视频等,可以从前言给出的下载信息下载,大家可以评估一下。

《Django 5企业级Web应用开发实战(视频教学版)》(王金柱)【摘要 书评 试读】- 京东图书 (jd.com)

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

RICHTEK立锜科技静态耗电的nanoPower Buck转换器RT5713/RT5714

RT5713/14 是静态耗电只有 360nA 的高效同步 Buck 转换器,即使负载电流低达 10mA 时也能保持其很高的转换效率。其输入电压范围为 2.2V~5.5V,输出电压为两档可选,通过电压选择引脚 VSEL 即可进行设定,负载能力可达 0.5A/1A。 它采…

字符串格式化(不造轮子)

jdk提供的字符串格式化工具类String.format、MessageFormat使用的占位符不够直观&#xff0c;除了使用重量级的模板引擎外&#xff0c;寻求一种轻量级的方式 Apache StringSubstitutor commons-text包下的org.apache.commons.text.StringSubstitutor类 <dependency><…

如何知道一个字段在selenium中是否可编辑?

这篇文章将检查我们如何使用Java检查selenium webdriver中的字段是否可编辑。 我们如何知道我们是否可以编辑字段&#xff1f;“readonly”属性控制字段的可编辑性。如果元素上存在“readonly”属性&#xff0c;则无法编辑或操作该元素或字段。 因此&#xff0c;如果我们找到一…

MySQL练手 --- 1789. 员工的直属部门

题目链接&#xff1a;1789. 员工的直属部门 这道题虽然是个简单题&#xff0c;但是"坑"倒是不少&#xff0c;所以记录一下 思路&#xff1a; 题目要干&#xff1a; 一个员工可以属于多个部门。当一个员工加入超过一个部门的时候&#xff0c;他需要决定哪个部门是…

ComfyUI插件:ComfyUI Impact 节点(一)

前言&#xff1a; 学习ComfyUI是一场持久战&#xff0c;而 ComfyUI Impact 是一个庞大的模块节点库&#xff0c;内置许多非常实用且强大的功能节点 &#xff0c;例如检测器、细节强化器、预览桥、通配符、Hook、图片发送器、图片接收器等等。通过这些节点的组合运用&#xff0…

如何保证前后端交互信息不被篡改。

先说说前后端有哪些认证方式来保证&#xff1a; 基于 session 的认证方式&#xff1a;前端在用户登录成功后&#xff0c;后端会在服务器端生成一个唯一的 session ID&#xff0c;并将该 session ID 返回给前端&#xff0c;在后续的请求中&#xff0c;前端需要带上该 session ID…

SEO与数据中心代理IP的结合能带来哪些便利?

本文将探讨将SEO与数据中心代理IP结合所带来的好处&#xff0c;以及如何利用这种组合来提升网站在搜索引擎中的排名和可见性。 1. 数据中心代理IP的作用和优势 数据中心代理IP指的是由数据中心提供的IP地址&#xff0c;用于隐藏真实服务器的位置和身份。与其他类型的代理IP相…

vue3 命令运行窗口暴露网络地址,以及修改端口号

一般情况下这里的地址是隐藏的 这里加上 --host 可以暴露网络地址&#xff0c;再加上--port --8080 就可以将端口号修改为8080&#xff08;修改后边的数字就可以修改为你想要的端口号&#xff09;

从 Batch Norm 到 SGD 隐藏的内容

我们仍然不了解机器学习的哪些方面 欢迎来到雲闪世界。令人惊讶的是&#xff0c;机器学习中的一些基本主题仍然不为研究人员所知&#xff0c;尽管它们很基础且常用&#xff0c;但却似乎很神秘。机器学习的有趣之处在于我们构建了可以工作的东西&#xff0c;然后弄清楚它们为什么…

Linux网络:传输层协议TCP(三)滑动窗口及流量控制

目录 一、关于滑动窗口在TCP中的应用 1.1什么是滑动窗口&#xff0c;为什么要有滑动窗口 1.2滑动窗口的实现 1.3滑动窗口针对丢包重传的处理机制 二、流量控制 一、关于滑动窗口在TCP中的应用 1.1什么是滑动窗口&#xff0c;为什么要有滑动窗口 在上一篇博文中博主阐述了…

叉车安全防撞系统有哪些?叉车防撞装置解决方案

叉车安全防撞系统作为现代工业物流中的安防防护装置&#xff0c;为企业的安全生产提供了强有力的保障。该系统集成了先进的传感器技术、高效的算法处理以及人性化的操作界面&#xff0c;确保叉车在作业过程中能够准确感知周围环境&#xff0c;及时作出反应&#xff0c;有效避免…

车载录像机:移动安全领域的科技新星

随着科技的飞速发展&#xff0c;人类社会的各个领域都在不断经历技术革新。其中&#xff0c;车载录像机作为安防行业与汽车技术结合的产物&#xff0c;日益受到人们的关注。它不仅体现了人类科技发展的成果&#xff0c;更在安防领域发挥了重要作用。本文将详细介绍车载录像机的…

信号、电源、网线、传感器防雷,SPD系列防雷器全覆盖!

信号、电源、网线、传感器防雷&#xff0c;SPD系列防雷器全覆盖&#xff01; SPD 系列防雷器是一种安装于被保护设备一侧的产品&#xff0c;旨在保护电子设备免受雷击、电磁脉冲、过压过渡冲击等造成的设备损坏。该产品广泛应用于工业控制、安全监测、网络通讯、交通电压等行业…

Windows 实用小工具:窗口钉子/文件管理 2024/7/27

一: wintop 窗口置顶工具 二:WinDirStat 这是一个免费的、开源的磁盘使用分析工具&#xff0c;适用于Windows系统。它会扫描你的硬盘&#xff0c;列出所有文件和文件夹的大小&#xff0c;并以图形化的方式展示&#xff0c;便于理解。 可以用来检测硬盘文件夹占用从而,酌情处…

多模态聊天效果如何?尝试和AI大模型煲电话粥

01 能像真人一样聊天的AI “我第一次来直播的发布会&#xff0c;有点紧张。”当OpenAI前沿研究部门主管马克&#xff08;Mark Chen&#xff09;通过手机对ChatGPT说话时&#xff0c;ChatGPT回答&#xff0c;“要不你深呼吸一下&#xff1f;” “好的&#xff0c;我深呼吸。”…

蓝牙耳机百元之内怎么选?四款百元精品爆款蓝牙耳机盘点

在蓝牙耳机的海洋中&#xff0c;百元价位仿佛是一片神秘的绿洲&#xff0c;既诱人又充满未知&#xff0c;如何在众多选项中挑选出真正的精品呢&#xff1f;蓝牙耳机百元之内怎么选&#xff1f;这是许多消费者的共同疑问&#xff0c;带着这个疑问&#xff0c;作为蓝牙耳机发烧党…

【计算机网络】DNS命令练习与抓包分析实验

一&#xff1a;实验目的 1&#xff1a;掌握DNS缓存的清除方法&#xff0c;了解DNS缓存的作用和影响。 2&#xff1a;熟悉nslookup和dig等DNS查询工具的使用&#xff0c;理解DNS查询的基本原理和过程。 3&#xff1a;通过抓包和分析&#xff0c;深入了解DNS查询和响应消息的格…

SpringBoot+ Sharding Sphere 轻松实现数据库字段加解密

一、介绍 在实际的软件系统开发过程中&#xff0c;由于业务的需求&#xff0c;在代码层面实现数据的脱敏还是远远不够的&#xff0c;往往还需要在数据库层面针对某些关键性的敏感信息&#xff0c;例如&#xff1a;身份证号、银行卡号、手机号、工资等信息进行加密存储&#xf…

使用API Monitor探测C++程序在调用HtmlHelp接口打开.chm文件时传入了哪些参数

目录 1、API Monitor介绍 2、为何要使用API Monitor工具&#xff1f; 2、HtmlHelp函数在API列表函数中找不到&#xff0c;将所在模块作为外部Extern DLL模块添加到API Monitor中 3、开启对Beyond Compare工具软件的实时监测 4、在Beyond Compare软件中打开chm帮助文档&…

数据库密码实现加盐加密处理

在实际的开发中&#xff0c;我们的数据库密码一般都是明文的方式存储在数据库中&#xff0c;但是&#xff0c;这种操作非常不安全&#xff0c;容易被黑&#xff01; 那么&#xff0c;此时我们就需要对其进行加密处理&#xff0c;市面上比较常见的就是MD5加密了&#xff0c;但是…