首页 > 行业资讯 > Django教程-中间件

Django教程-中间件

时间:2023-08-06 来源: 浏览:

Django教程-中间件

点击关注 Python架构师
Python架构师

gh_1d7504e4dee1

回复:python,领取Python面试题。分享Python教程,Python架构师教程,Python爬虫,Python编程视频,Python脚本,Pycharm教程,Python微服务架构,Python分布式架构,Pycharm注册码。

收录于合集
#django 10
#Django开源项目 20
#Django教程 19
#python web教程 28
#python教程 118
整理: python架构师

在 Django 中,中间件是一个轻量级插件,在请求和响应执行期间进行处理。中间件用于执行应用程序中的功能。这些功能可以是安全、会话、csrf 保护、身份验证等。

Django提供了各种内置的中间件,也允许我们编写自己的中间件。请参阅Django 项目的settings.py文件,其中包含各种中间件,用于向应用程序提供功能。例如,安全中间件用于维护应用程序的安全性。

// 设置.py

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’ , ]

资源分享

点击领取:最全Python资料合集

创建自己的中间件

中间件是一个接受参数get_response并返回响应的类。

class FirstMiddleware : def __init__ ( self , get_response) : self .get_response = get_response def __call__ ( self , request) : response = self .get_response(request)

init(获取响应)

它必须接受 get_response 参数,因为 Django 仅使用它来初始化中间件。它只调用一次,而 call 对每个请求执行。

激活中间件

要激活中间件,请将其添加到settings.py文件的 MIDDLEWARE 列表中。

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’ , ’add new created middleware here’ ]

Django 项目不需要中间件,MIDDLEWARE 列表可以为空,但建议至少有一个 CommonMiddleware。

中间件顺序和分层

中间件按照 MIDDLEWARE 列表中定义的顺序应用,每个中间件类都是一个层。MIDDLEWARE 列表就像一个洋葱,因此每个请求从上到下传递,而响应则按相反顺序(从下到上)。

其他中间件方法

除了请求和响应之外,我们还可以添加三种方法来为我们的中间件添加更多功能。

process_view(请求、view_func、view_args、view_kwargs)

它分别接受 HttpRequest 对象、函数对象、传递给视图的参数列表或参数字典。

该方法在调用视图之前执行。它返回 None 或 HttpResponse,如果返回 HttpResponse,则停止处理并返回结果。

process_template_response(请求,响应)

它有两个参数,第一个是 HttpRequest 的引用,第二个是 HttpResponse 对象。该方法在视图完成执行后立即调用。

它返回一个实现 render 方法的响应对象。

process_exception(请求,异常)

该方法有两个参数,第一个是 HttpRequest 对象,第二个是视图函数引发的 Exception 类对象。

此方法返回 None 或 HttpResponse 对象。如果返回响应,则将应用中间件并将结果返回到浏览器。否则,异常由默认处理系统处理。

 
热门推荐
  • 历时五年,Cython 3.0 正式发布

  • Django教程-数据库迁移

  • 6个顶级Python可视化库

版权:如无特殊注明,文章转载自网络,侵权请联系cnmhg168#163.com删除!文件均为网友上传,仅供研究和学习使用,务必24小时内删除。
相关推荐