多语言展示
当前在线:245今日阅读:167今日分享:16

Django中间件的使用

Django中间件的使用,中间件可以在Django的请求前和响应后进行额外处理。
方法/步骤
1

登录Ubuntu系统,打开终端,进入python虚拟环境,创建django工程,在工程中创建app,命令如下:workon djangotestdjango-admin startproject djmidcd djmidpython manage.py startapp book

2

在工程中创键一个中间件文件,并编写处理请求返回响应前代码vi middleware.pymiddleware.py文件如下:def my_middleware(get_response):    print('init 被调用')    def middleware(request):        print('before request 被调用')        response = get_response(request)        print('after response 被调用')        return response    return middleware解释一下:my_middleware 函数需要接收 get_response对象,获取response对象。

3

在工程的settings.py文件,注册book应用,注册middleware中间件,注意settings.py文件路径是针对项目的根目录cd djmidvi settings.py修改部分的settings.py文件如下;INSTALLED_APPS = [    'django.contrib.admin',    'django.contrib.auth',    'django.contrib.contenttypes',    'django.contrib.sessions',    'django.contrib.messages',    'django.contrib.staticfiles',    'book.apps.BookConfig',]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',    'middleware.my_middleware',]

4

在工程的urls.py文件include应用的urlsvi urls.pyurls.py文件如下:from django.conf.urls import url,includefrom django.contrib import adminurlpatterns = [    url(r'^admin/', admin.site.urls),    url(r'^book/', include('book.urls')),]

5

在应用创建urls.py文件,编写到类视图的url cd ../bookvi urls.pyurl.py文件如下:from django.conf.urls import urlfrom . import viewsurlpatterns = [    url(r'^index/', views.index.as_view()),]

6

在views.py文件,编写类视图indexvi views.pyviews.py文件如下:from django.shortcuts import renderfrom django.views.generic import Viewfrom django.http import HttpResponseclass index(View):    def get(self,request):        return HttpResponse('get page')    def post(self,request):        return HttpResponse('post page')

7

运行django服务器,会打印出init被调用,这个仅在每次启动服务器开始时执行,这里因为开启了debug模式,所以打印了两次,正常情况下只打印一次。python manage.py runserver

8

在本机浏览器输入网址:http://127.0.0.1:8000/book/index/进行访问,返回:get page终端在请求时和响应时分别打印出before request 被调用after response 被调用中间件测试成功

注意事项
1

中间件可以定义在工程任意位置,只要在settings.py文件正确注册就行

2

多个中间件执行顺序,处理请求自上而下,返回响应自下而上

推荐信息