博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python-Django-Ajax进阶3
阅读量:6660 次
发布时间:2019-06-25

本文共 2325 字,大约阅读时间需要 7 分钟。

1 中间件

-是什么?

中间件顾名思义,是介于request与response处理之间的一道处理过程,相对比较轻量级,并且在全局上改变django的输入与输出。因为改变的是全局,所以需要谨慎实用,用不好会影响到性能

-怎么用:

 

-自定义中间件:

1 写一个类,继承MiddlewareMixin,

2 在类中写方法:
process_request
3 在settings中配置

from django.utils.deprecation import MiddlewareMixinfrom django.shortcuts import render, HttpResponseclass 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 %}

转载于:https://www.cnblogs.com/du-jun/p/10311307.html

你可能感兴趣的文章
susbench性能测试工具
查看>>
SpringMVC跨域接收JSON
查看>>
小议高清视频会议普及
查看>>
vcc编译器的报错
查看>>
2014总结
查看>>
简单的I2C协议理解
查看>>
session写入到memcache
查看>>
Hadoop (CDH4发行版)集群部署 (部署脚本,namenode高可用,hadoop管理)
查看>>
手机运维
查看>>
安装PHP7,Apach2.4
查看>>
如何安装win8的最好方法和优缺点
查看>>
Predicting Running Time of Grid Tasks based on CPU Load Predictions
查看>>
蜜月圣地之二
查看>>
win7 64位导入证书时,窗口变成未响应解决办法
查看>>
看PHP未来5年的发展
查看>>
Mac OSX操作系统安装和配置Zend Server 6教程(1)
查看>>
手动编译httpd
查看>>
SQLSERVER存储过程基本语法
查看>>
RSA知识整理
查看>>
14.12.2类的特殊成员2
查看>>