Django.4
自定义中间件
自定义中间件流程:
-
在工程目录下创建middleware目录
- 目录中创建一个python文件
-
在python文件中导入中间件的基类
- from django.utils.deprecation import MiddlewareMixin
- 在类中根据功能需求,创建切入需求类,重写切入点方法
from django.shortcuts import redirect from django.urls import reverse from django.utils.deprecation import MiddlewareMixin class LearnMiddleware(MiddlewareMixin): def process_request(self, request): print(request.path) # 实现功能 """ 记录,日志 用户认证 黑名单,白名单 优先级 拦截器,反爬虫 - 三十秒一次 - 一分钟之内最多十次 - 数据正确给你错误状态码 - 加密 - 动态加密 """ def process_exception(self, request, exception): print(request, exception) return redirect(reverse("app:index"))
-
启用中间件,在settings中进行配置,MIDDLEWARE中添加 middleware.文件名.类名
MIDDLEWARE = [ 'middleware.TeachMiddle.LearnMiddleware', # 自定义中间件 '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', ]
图片上传
文件数据存储在request.FILES属性中
form表单上传文件需要添加enctype='multipart/form-data' 文件上传必须使用POST请求方式
<form action="{% url 'two:upload' %}" method="post" enctype="multipart/form-data"> {% csrf_token %} <input type="text" name="username" placeholder="请输入用户名"> <input type="file" name="icon" placeholder="请选择头像"> <button>提交</button> </form>
- 存储
-
在static文件夹下创建uploadefiles用与存储接收上传的文件
-
在settings中配置,MEDIA_ROOT=os.path.join(BASE_DIR,r'static/uploadefiles')
-