Python-Django-Ajax进阶3
Posted 天宝老爹
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Python-Django-Ajax进阶3相关的知识,希望对你有一定的参考价值。
1 中间件
-是什么?
中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能
-怎么用:
-自定义中间件:
1 写一个类,继承MiddlewareMixin,
2 在类中写方法:
process_request
3 在settings中配置
from django.utils.deprecation import MiddlewareMixin from django.shortcuts import render, HttpResponse class mymiddleware1(MiddlewareMixin): def process_request(self, request): # print(request.path) # print(type(request)) # request.aa=\'lqz\' print(\'我是middle1的process_request方法\') # 一旦returnHttpResponse对象,直接返回 # return HttpResponse(\'我返回了\') def process_response(self, request, response): # request就是请求对象 # response就是响应对象 print(\'我是middle1的process_response方法\') # response.set_cookie(\'name\',\'lqz\') return response def process_view(self, request, callback, callback_args, callback_kwargs): # callback 是要执行的视图函数地址 # callback_args是要执行的视图函数的位置参数(元组) # callback_kwargs是要执行的视图函数的关键字参数(字典) # print(type(callback)) # print(callback_args) # print(callback_kwargs) # response=callback(request,*callback_args,**callback_kwargs) print(\'我是middle1的process_view方法\') # 如果返回response,后面的process_view就不执行了,直接执行中间件的process_response方法 # return response def process_exception(self, request, exception): #exception 异常对象 print(\'我是m1的process_exception方法\') class mymiddleware2(MiddlewareMixin): def process_request(self, request): # print(request.path) # print(type(request)) print(\'我是middle2的process_request方法\') def process_response(self, request, response): print(\'我是middle2的process_response方法\') return response def process_view(self, request, callback, callback_args, callback_kwargs): print(\'我是middle2的process_view方法\') # 只有视图函数抛异常,才执行 def process_exception(self, request, exception): print(\'我是m2的process_exception方法\') print(str(exception)) return HttpResponse(\'您的操作有误\') def process_template_response(self, request, response): print(\'我是m2的process_template_response\') return response
-5个方法(process_request,process_response)
-如果process_request方法返回HttpResponse的对象,请求直接返回,按中间件方法执行顺序往回走
2 csrf
xss攻击/csrf或xsrf跨站请求伪造
使用:中间件不注释,form表单中写{% csrf_token %}
以上是关于Python-Django-Ajax进阶3的主要内容,如果未能解决你的问题,请参考以下文章
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的C语言学习进阶之旅解决 Visual Studio 2019 报错:错误 C4996 ‘fscanf‘: This function or variable may be unsafe.(代码片段
我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段
我的Android进阶之旅关于Android平台获取文件的mime类型:为啥不传小写后缀名就获取不到mimeType?为啥android 4.4系统获取不到webp格式的mimeType呢?(代码片段