Django 中间件

Django 高级扩展

静态文件:css,js,图片,文件,字体等

配置settings文件

STATICFILES_DIRS=[
    os.path.join(BASE_DIR,'static')
]

在前端页面里加入

{% load static %}

Django2.0 使用的是{% load static from staticfiles %}
Django3 用 {% load static %}就行
这样避免了使用绝对路径时,样式文件夹名改变,需要改很多引入代码的麻烦

实验

{% load static %}



    
    Title
    
   
    


hello world

中间件

概述:
一个轻量级,底层的插件,可以介入Django的请求和响应
本质:一个python类

方法

1:init

不需要传参数,服务器响应第一个请求的时候自动调用,用于确定是否启用该中间件

2:process_request(self,request)

在执行视图之前调用(分配url匹配视图之前),每个请求上都会调用,返回None或者HttpResponse对象

3:process_view(self,request,view_func,view_args,view_kwargs)

调用视图之前,每个请求上都会调用,返回None或者HttpResponse对象

4:process_template_response(self,request,response)

在视图刚好执行完后调用,每个请求上都会调用,返回None或者HttpResponse对象
使用render

5:process_response(self,request,response)

所有响应返回浏览器之前调用,返回HttpResponse对象

6:process_exception(self,request,exception)

当视图抛出异常时调用,返回HttpResponse对象
Django 中间件_第1张图片

自定义中间件

工程目录下创建middleware创建app目录下创建python文件
Django 中间件_第2张图片

例:

from django.utils.deprecation import MiddlewareMixin
from django.http import  HttpResponse,request
class myMiddleware(MiddlewareMixin):
    def process_request(self,request):
        print("get的参数为:",request.GET.get("a"))

使用自定义中间件

配置settings文件,在MIDDLEWARE = [中添加

'middleware.app1.myMiddleware.myMiddleware',

实验创建的是否成功

Django 中间件_第3张图片

你可能感兴趣的:(Django 中间件)