Django框架之错误视图和HTTP方法装饰器

news2024/11/16 5:50:39

本篇主要记录如何定义视图,错误视图有哪些并如何实现自定义,

HTTP方法装饰器定义及实现,还有csrf中间件设置位置及关闭。

定义视图

一般在views.py文件下定义

视图参数:

错误视图

400视图

当出现SuspiciousOperation异常并且代码中没有进行处理时,

Django会发生“bad request”异常。

默认视图是django.views.defaults.bad_request。

主要是由于用户操作导致的异常。

403视图

对于HTTP 403异常,默认的视图是django.views.defaults.permission_denied,

该视图会在网页中输出“403 Forbidden”或者加载403.html

404视图

当视图程序抛出HTTP 404异常时,Django会调用一个视图去处理它,

默认视图是django.views.defaults.page_not_found()。

page_not_found()会在网页中输出简单的“Not Found”字样或者加载404.html。

500视图

当出现运行时(服务器代码)异常时,

Django会调用django.views.defaults.server_error视图。

server_error视图会在网页中输出简单的“Server Error”字样或者加载500.html。

自定义404视图

1.配置settings.py

2.在templates目录下定义一个404.html

内容如下:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>404</title>
</head>
<body>
<h1>404页面</h1>
<h3>页面丢失</h3>
<p>{{request_path}}页面不存在。你可以点击下面的按钮,返回主页。 </p>
<br/>
<a href="/">返回首页</a>
</body>
</html>

request_path:导致错误的网址

注意:Debug如果为True永远不会调用404.html页面

HTTP方法装饰器

概述

HTTP方法装饰器用于约束访问视图的请求类型,

该装饰器位于django.views.decorators.http模块。

当访问视图的请求类型不正确时,

HTTP方法装饰器将会返回django.http.HttpResponseNotAllowed异常错误。

 

代码示例

from django.views.decorators.http import require_http_methods


@require_http_methods(['GET'])

def students(request):
    """ 学生列表 """

    return HttpResponse('这是学生列表')

注意事项

HTTP请求类型必须使用大写字母。

如果仅允许使用GET、POST或者其他安全类型(如GET和HEAD方法),

可以使用django.views.decorators.http模块下面的其他装饰器。

require_GET():装饰器可以要求视图只接受GET方法。

示例:

from django.views.decorators.http import require_http_methods, require_GET

@require_GET
def add_student(request):
    """ 创建学生页面 """

    return render(request, 'myapp/createStudent.html')

require_POST():装饰器可以要求视图只接受POST方法。

require_safe():装饰器可以要求视图只接收GET和HEAD方法。

关闭CSRF验证

可通过修改Projects/settings.py中MIDDLEWARE,暂时关闭csrf中间件验证。

MIDDLEWARE = [

    'django.middleware.security.SecurityMiddleware',

    'django.contrib.sessions.middleware.SessionMiddleware',

    'django.middleware.common.CommonMiddleware',

    #'django.middleware.csrf.CsrfViewMiddleware',

    'django.contrib.auth.middleware.AuthenticationMiddleware',

    'django.contrib.messages.middleware.MessageMiddleware',

    'django.middleware.clickjacking.XFrameOptionsMiddleware',

]

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

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

相关文章

Linux Kernel内核整体架构(图文详解)

1&#xff0c;前言 本文是“Linux内核分析”系列文章的第一篇&#xff0c;会以内核的核心功能为出发点&#xff0c;描述Linux内核的整体架构&#xff0c;以及架构之下主要的软件子系统。之后&#xff0c;会介绍Linux内核源文件的目录结构&#xff0c;并和各个软件子系统对应。…

WPF 从0开始写笔记,全属性功能深度剖析 20230510

文章目录 FontFamilyFontWeightResizeModeAllowsTransparencyMarginCornerRadiusBorder.effectBlurRadiusdirectionVerticalAlignmentTargetTypeControlTemplateDataTemplate 和ControlTemplate的区别StrokePath控件Border FontFamily 在WPF中&#xff0c;FontFamily属性用于指…

5月第1周榜单丨飞瓜数据B站UP主排行榜(哔哩哔哩平台)发布!

飞瓜轻数发布2023年5月1日-5月7日飞瓜数据UP主排行榜&#xff08;B站平台&#xff09;&#xff0c;通过充电数、涨粉数、成长指数三个维度来体现UP主账号成长的情况&#xff0c;为用户提供B站号综合价值的数据参考&#xff0c;根据UP主成长情况用户能够快速找到运营能力强的B站…

【C++】类型转换-static_cast、reinterpret_cast、const_cast、dynamic_cast

文章目录 1. C语言中的类型转换2. 为什么C需要四种类型转换3. C强制类型转换static_castreinterpret_castconst_castdynamic_cast 4.explicit5.RTTI6.考点 1. C语言中的类型转换 在C语言中,如果赋值运算符左右两侧类型不同,或者形参与实参类型不匹配,或者返回值类型与接收返回…

网易云信 RTC 音频问题排查的挑战与实践

背景与挑战 实时通信&#xff08;Real-Time Communication&#xff0c;RTC&#xff09;音频技术是指将音频流实时传输到远程用户的技术&#xff0c;满足线上实时交互的诉求&#xff0c;广泛应用于在线教育、视频会议、直播、泛娱乐社交、金融、医疗、政企等场景。在 RTC PaaS…

组件通信的几种方式

组件通信的几种方式 父组件向子组件传值 在父组件中用自定义组件进行传值&#xff0c;自定义属性写到父组件调用子组件的那个标签中。在子组件中用props进行接收&#xff0c;props写到子组件中与data同级&#xff0c;props是一个数组&#xff0c;内容就是自定义属性的名字。 …

SD nand 与 SD卡的SPI模式驱动

文章目录 SD nand 与 SD卡的SPI模式驱动 1. 概述 2. SPI接口模式与SD接口模式区别 2.1 接口模式区别 2.2 硬件引脚 2.3 注意事项 3. SD接口协议 3.1 命令 3.1.1 命令格式 3.1.2 命令类型 3.2 响应 3.2.1 响应格式 4. SD nand&#xff08;SD卡&#xff09;结构描述…

内网渗透之域环境信息搜集

1.查看是否为域环境 net config workstation下面命令能否执行成功和computer brower服务是否开启有关 net view /domain2.查询域内的用户和组 查询域内的所有用户 net user /domain查询域内的所有用户(需要在域控上敲) dsquery user查询域内的某个用户 net user dbadmin /d…

代码随想录算法训练营day36 | 435. 无重叠区间,763.划分字母区间,56. 合并区间

代码随想录算法训练营day36 | 435. 无重叠区间&#xff0c;763.划分字母区间&#xff0c;56. 合并区间 435. 无重叠区间763.划分字母区间56. 合并区间总结 435. 无重叠区间 教程视频&#xff1a;https://www.bilibili.com/video/BV1A14y1c7E1/?spm_id_from333.788&vd_sou…

【Linux】安装node-v16.17.0-linux

【Linux】安装node-v16.17.0-linux 1 下载node-v16.17.0-linux-x64.tar.xz 下载地址&#xff1a;https://nodejs.org/zh-cn 2 解压文件 cd 到node-v16.17.0-linux-x64.tar.xz所在的路径 xz -d node-v16.17.0-linux-x64.tar.xz tar -xvf node-v16.17.0-linux-x64.tar 3 软…

vue2 框架运行原理剖析系列(一)之 new Vue()实例化过程到底做了什么!!!

一、vue 基础用法 1.1 引入vue 1.2 使用vue语法编写ui 1.3 实现数据绑定 示例代码如下 <div id"app">{{ message }} </div> <script> var app new Vue({el: #app,data: {message: Hello Vue!} }) </script>1.4 代码效果&#xff1a;使用浏…

4114 Flipping Game

4114 Flipping Game PTA | 程序设计类实验辅助教学平台 思路&#xff1a;我们定义f[i][j]表示当前已经进行了i轮&#xff0c;并且当前的两个串的不同的数的个数是j&#xff0c;就接下来我们考虑状态转移&#xff0c;首先是假设我们在不同的中挑选了x个进行反转&#xff0c;则需…

Go语言学习查缺补漏ing Day4

Go语言学习查缺补漏ing Day4 一、掌握iota的使用 请看下面这段代码&#xff1a; package mainimport "fmt"const (a iota_bc "ReganYue"dd1e iotaf iota )func main() {fmt.Println(a, b, c, d, d1, e, f) }思考一下输出结果会是什么&#xff1f; …

评价指标通俗解释:什么是准确率、精确率、召回率、F1得分

y_true [1, 1, 1, 1, 1, 0, 0, 0, 0, 2] y_pred [1, 1, 0, 1, 1, 1, 0, 1, 0, 2]以上述类别 1 为例&#xff1a; 准确率 accuracy 总体概念&#xff0c;指所有样本中预测正确的比例&#xff1a;7/10 0.7 精确率 precision 预测标签为 1 的样本中确实为 1 的比例&#xf…

数字化战略,如何解读企业财务报表

01 财务数字化管理 第一&#xff0c;财务基本信息化建设。比如财务系统、财务共享中心等通过数字化的手段提升财务会计核算、财务流程管理效率&#xff0c;解决流程性管理的问题。 第二&#xff0c;利用各类商业智能 BI 分析、数据分析的手段把企业的所有行为都进行量化对比&…

开源之夏2023 | 欢迎申请openEuler Embedded SIG开发任务

关于开源之夏 开源之夏是开源软件供应链点亮计划下的暑期活动&#xff0c;由中科院软件研究所与openEuler社区联合主办&#xff0c;旨在鼓励在校学生积极参与开源软件的开发维护&#xff0c;促进优秀开源软件社区的蓬勃发展。 活动联合各大开源社区&#xff0c;针对重要开源软件…

国资委检查再升级,用友全球司库敏捷响应

政策支持&#xff0c;央企司库建设提速 司库管理体系建设是中央企业加快建设世界一流企业的重要战略举措。近年来&#xff0c;财政部、国资委高度重视中央企业司库管理工作。 2021年至今&#xff0c;财政部、国资委陆续出台一系列强化中央企业资金管理的文件&#xff0c;针对央…

软件架构:DSL领域特定语言初探

所谓DSL领域专用语言(domain specific language / DSL)&#xff0c;其基本思想是“求专不求全”&#xff0c;不像通用目的语言那样目标范围涵盖一切软件问题&#xff0c;而是专门针对某一特定问题的计算机语言。DSL之于程序员正如伽南地之于以色列人&#xff0c;是最初也是最终…

常用的python gpu加速方法

在使用 PyCharm进行机器学习的时候&#xff0c;我们常常需要自己创建一些函数&#xff0c;这个过程中可能会浪费一些时间&#xff0c;在这里&#xff0c;我们为大家整理了一些常用的 Python加速方法&#xff0c;希望能给大家带来帮助。 在 Python中&#xff0c;我们经常需要创建…

SpringBoot ( 三 ) 转页

2.4.转页 2.4.1.内部转页 forward 2.4.1.1.转页配置 在 配置文件 resources > application.properties 中可以找到转页的配置信息, 这些是SpringBoot的默认配置, 是可以省略不写在配置文件中的 2.4.1.2.准备页面 在 resources 文件夹下 创建新文件夹 templates , 这个文…