中间件是一个挂钩到 Django 的请求/响应处理的框架。它是一个轻量级的低级“插件”系统,用于全局更改 Django 的输入或输出。
中间件工厂是一个可调用对象,它接受一个get_response可调用对象并返回一个中间件。中间件是可调用的,它接受请求并返回响应,就像视图一样。
在这里我会给你我们将帮助你举例说明如何创建一个自定义的 django 中间件。那么让我们看看下面的例子:
第 1 步:创建项目
在这一步中,我们将使用 django-admin 创建一个新的 django 项目。返回命令行界面并运行以下命令:
django-admin startproject example
第 2 步:创建应用
现在我们将创建一个名为core的应用程序来存储帖子名称列表。我们故意保持基本的东西。使用Control+c停止本地服务器并使用startapp命令创建这个新应用程序。
cd example django-admin startapp core
第 3 步:更新 setting.py
然后在我们的settings.py文件中更新INSTALLED_APPS以通知 Django 有关该应用程序的信息。
settings.py
.... INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'core', ] 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', 'core.middleware.CustomMiddleware' #Add line ]
第 4 步:创建中间件
在这一步中,我们需要在我们的核心应用程序中配置创建一个新的中间件文件。打开 core/middleware.py 文件并添加。
core/middleware.py
class CustomMiddleware: def __init__(self, get_response): self.get_response = get_response def __call__(self, request): print("custom middleware before next middleware/view") # Code to be executed for each request before # the view (and later middleware) are called. response = self.get_response(request) response.write("<p></p><hr/><div style='color:blue;text-align:center'>Welcome to Tuts-Station.com</div>") # Code to be executed for each response after the view is called print("custom middleware after response or previous middleware") return response
第 5 步:创建视图
在这一步中,我们需要配置视图。打开 core/views.py 文件并添加。
core/views.py
from django.shortcuts import render # Create your views here. def my_view(request): return render(request, 'home.html')
第 6 步:创建模板
接下来,然后使用您的文本编辑器创建新的模板文件:core/templates/home.html文件和添加:
core/templates/home.html
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>Home</title> </head> <body> <div class="container" style="text-align: center;"> <h1>Home</h1> <p>Django Custom Middleware Example</p> </div> </body> </html>
第 7 步:创建 URL
在本节中,我们需要核心应用程序中的urls.py文件,但 Django 不会使用 startapp 命令为我们创建一个文件。使用文本编辑器创建core/urls.py并粘贴下面的代码。
core/urls.py
from django.urls import path from . import views urlpatterns = [ path('home', views.my_view, name='index'), ]
接下来,我们需要为我们的核心应用程序添加一个 URL 路径,这可以通过导入 include 并为其设置路径来完成。
example/urls.py
from django.contrib import admin from django.urls import path, include urlpatterns = [ path('admin/', admin.site.urls), path('', include('core.urls')), ]
运行服务器
在此步骤中,我们将运行本地开发服务器来使用我们的应用程序,而无需将其部署到 Web。
python manage.py runserver
接下来,使用 Web 浏览器转到 http://localhost:8000/home 地址。
我希望它能帮助你……