Django中间件和csrf
2022/5/24 23:50:06
本文主要是介绍Django中间件和csrf,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
目录- django中间件
- django中间件简介
- 五个可以自定义的方法
- django中间件的使用场景
- 自定义中间件
- 自定义中间件的步骤
- 自定义中间件的常用方法
- 需要了解的方法
- csrf
- csrf简介
- csrf解决策略
django中间件
django中间件简介
django中间件是django的门户,django自带七个中间件,每个都有各自对应的功能
五个可以自定义的方法
django不仅有自带的七个中间件,django还支持自定义中间件并提供五个可以自定义的方法
(1)process_request
(2)process_response
(3)process_view
(4)process_template_response
(5)process_excepton
django中间件的使用场景
只要是全局相关的功能都可在中间件中编写
例如:用户黑名单校验、用户访问频率校验、网站全局用户身份校验
自定义中间件
自定义中间件的步骤
1.创建一个任意名称的文件夹
2.在该文件夹内创建一个任意名称的py文件
3.在该py文件内编写中间件类
4.配置文件中注册
自定义中间件的常用方法
1.process_request
请求来的时候会从上往下依次执行配置文件中注册了的中间件里面的process_request方法,若没有则直接跳过
若该方法自己返回了HttpResponse对象,那么请求不再继续往后直接返回相应的数据
2.process_response
响应走的时候会从下往上依次执行配置文件中注册了的中间件里面的process_response方法,若没有则直接跳过
若该方法自己返回了HttpResponse对象,那么响应会替换成该HttpResponse对象数据,而不再是视图函数想要返回给客户端的数据
注意:若process_request返回了HttpResponse对象,那么会从当前位置从下往上执行每一个process_response
需要了解的方法
1.process_view
路由匹配成功之后执行视图之前从上往下执行配置文件中注册了的中间件里面的process_view方法
2.process_template_response
视图函数执行完毕之后返回的对象中含有render属性对应一个render方法
则会从下往上执行配置文件中注册了的中间件里面的process_template_response方法
3.process_exception
视图函数执行过程中报错并在返回响应的时候会从下往上执行配置文件中注册了的中间件里面的process_exception
csrf
csrf简介
csrf,中文名,跨站请求伪造。csrf是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法,利用的是网站对用户网页浏览器的信任。
csrf解决策略
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Title</title> {% load static %} <link rel="stylesheet" href="{% static 'bootstrap-3.3.7-dist/css/bootstrap.min.css' %}"> <script src="{% static 'jquery-3.6.0.js' %}"></script> </head> <body> <div class="container"> <div class="row"> <div class="col-md-4 col-md-offset-4"> <br><br><br> <form action="" method="post"> {% csrf_token %} <p>当前账户:<input type="text" name="current_user"></p> <p>目标账户:<input type="text" name="target_user"></p> <p>转账金额:<input type="text" name="money"></p> <input type="submit"> </form> </div> </div> </div> </body> </html>
def test_csrf(request): if request.method == 'POST': current_user = request.POST.get('current_user') target_user = request.POST.get('target_user') money = request.POST.get('money') return HttpResponse(f'<br><br><br><h2 style="text-align:center">用户{current_user}给用户{target_user}转账{money}元</h2>') return render(request, 'test_csrf.html')
这篇关于Django中间件和csrf的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-15SendGrid 的 Go 客户端库怎么实现同时向多个邮箱发送邮件?-icode9专业技术文章分享
- 2024-11-15SendGrid 的 Go 客户端库怎么设置header 和 标签tag 呢?-icode9专业技术文章分享
- 2024-11-12Cargo deny安装指路
- 2024-11-02MongoDB项目实战:从入门到初级应用
- 2024-11-01随时随地一键转录,Google Cloud 新模型 Chirp 2 让语音识别更上一层楼
- 2024-10-25Google Cloud动手实验详解:如何在Cloud Run上开发无服务器应用
- 2024-10-24AI ?先驱齐聚 BAAI 2024,发布大规模语言、多模态、具身、生物计算以及 FlagOpen 2.0 等 AI 模型创新成果。
- 2024-10-20goland工具下,如修改一个项目的标准库SDK的版本-icode9专业技术文章分享
- 2024-10-17Go学习:初学者的简单教程
- 2024-10-17Go学习:新手入门完全指南