python全栈开发day71-ajax
一、django中间件
1 中间件的用处(针对请求和响应做全局的操作时)
可以做登录验证
访问限制
2. 自定义中间件,五个方法和三个要点
三个要点:
1.执行时间和执行顺序
2.参数
3.返回值
1) process_request(self,request)
1.注册顺序,在视图函数之前
2.参数request表示请求对象本身,和视图函数中是同一个对象
3.返回None就继续往后走,返回响应对象就从本中间件的process_response倒序返回
2) process_response(self,request,response)
1.注册的倒序,返回响应之后
2.request 请求对象,response:响应对象
3.必须返回响应对象
3) process_view(self,request,view_func,view_args,view_kwargs)
1.注册的顺序,视图函数之前,urls.py之后
2.view_func:将要执行的视图函数对象
3.返回None就继续往后走,返回响应对象就不往后走,而是倒序遍历process_response
4) process_template_response(self,request,response)
5) process_exception(self,request,exception) 3. csrf中间件源码分析
为什么要把验证csrf_token的逻辑写在process_view()中。
如果加在process_request中,就会每个视图函数进行验证,哪些需要csrf验证豁免的csrf_exampt就会不能豁免,写在process_view()中就可以进行相应的请求豁免操作。 4. 昨日作业
同一IP一分钟内访问超过3次拒绝访问
VISITED_RECORD = {}
class Throttle(MiddlewareMixin):
def process_request(self,request):
IP = request.META.get('REMOTE_ADDR')
now = time.time()
if IP not in VISITED_RECORD:
VISITED_RECORD[IP] = []
history = VISITED_RECORD[IP]
while history and now - history[-1]>60:
history.pop()
if len(history) > 3:
return HttpResponse('滚')
history.append(now)
二、ajax 对接django
http://wuchengyi.com/post/14/
python全栈开发day71-ajax的更多相关文章
- 巨蟒python全栈开发django11:ajax&&form表单上传文件contentType
回顾: 什么是异步? 可以开出一个线程,我发出请求,不用等待返回,可以做其他事情. 什么是同步? 同步就是,我发送出了一个请求,需要等待返回给我信息,我才可以操作其他事情. 局部刷新是什么? 通过jq ...
- 巨蟒python全栈开发django10:ajax&&登录认证
通过题目进行知识点回顾: 聚合查询 From django.db.models import Avg,Min,Max,F,Q,Count,Sum #查询书籍的平均值 Ret= Models.Book. ...
- Python全栈开发:Ajax全套
概述 对于WEB应用程序:用户浏览器发送请求,服务器接收并处理请求,然后返回结果,往往返回就是字符串(HTML),浏览器将字符串(HTML)渲染并显示浏览器上. 1.传统的Web应用 一个简单操作需要 ...
- python 全栈开发,Day99(作业讲解,DRF版本,DRF分页,DRF序列化进阶)
昨日内容回顾 1. 为什么要做前后端分离? - 前后端交给不同的人来编写,职责划分明确. - API (IOS,安卓,PC,微信小程序...) - vue.js等框架编写前端时,会比之前写jQuery ...
- Python全栈开发【面向对象进阶】
Python全栈开发[面向对象进阶] 本节内容: isinstance(obj,cls)和issubclass(sub,super) 反射 __setattr__,__delattr__,__geta ...
- Python全栈开发【面向对象】
Python全栈开发[面向对象] 本节内容: 三大编程范式 面向对象设计与面向对象编程 类和对象 静态属性.类方法.静态方法 类组合 继承 多态 封装 三大编程范式 三大编程范式: 1.面向过程编程 ...
- Python全栈开发【模块】
Python全栈开发[模块] 本节内容: 模块介绍 time random os sys json & picle shelve XML hashlib ConfigParser loggin ...
- Python全栈开发【基础四】
Python全栈开发[基础四] 本节内容: 匿名函数(lambda) 函数式编程(map,filter,reduce) 文件处理 迭代器 三元表达式 列表解析与生成器表达式 生成器 匿名函数 lamb ...
- Python全栈开发【基础三】
Python全栈开发[基础三] 本节内容: 函数(全局与局部变量) 递归 内置函数 函数 一.定义和使用 函数最重要的是减少代码的重用性和增强代码可读性 def 函数名(参数): ... 函数体 . ...
- Python全栈开发【基础二】
Python全栈开发[基础二] 本节内容: Python 运算符(算术运算.比较运算.赋值运算.逻辑运算.成员运算) 基本数据类型(数字.布尔值.字符串.列表.元组.字典) 其他(编码,range,f ...
随机推荐
- Linux学习之CentOS(二)--初识linux的一些常用命令
Linux学习之CentOS(二)--初识linux的一些常用命令 在VM上安装完了CentOS6.4以后,看着linux系统成功跑起来,心里小激动了一把......但是前方学习的道路还很遥远... ...
- PHP项目笔记
1.controller输出前端传来的值:var_dump($_POST['oid']); 2.var_dump($_POST['oid']);die:
- Android “Command” from work summary
总结一下Android中的命令. 一.adb 与 shell ADB的全称为Android Debug Bridge(调试桥).是一个适用命令行工具,用来与模拟器实例或链接的Android设备进行通信 ...
- ionic3 打包Xcode 9 Swift Language Version (SWIFT_VERSION) Ask 报错
解决方案 选择4.0 然后报错17个,类似以下这样的错误 'AVMediaTypeVideo' has been renamed to 'AVMediaType.video' 根据提示更改 AVMed ...
- 声明寄存器ROM
:] ROM [:] ; integer i; initial begin ;i<=;i=i+) begin ROM[i] <= {{'b0}}; end end 同时可以考虑双端口ROM ...
- 如何在cmd中安装python第三方模块
打开 cmd终端 1 输入pip install 模块名. 2 等待安装完成即可.
- GitHub搭配使用Travis CI 进行自动构建服务
Travis CI (Continuous Integration)持续集成服务 用处:自动监控软件仓库,可以在代码提交后立刻执行自动测试或构建 1.在Github自己的仓库根目录里添加.travis ...
- Winhex数据恢复笔记(五)
一.上次介绍了Windows API函数,这次对Windows API函数的参数做个笔记 1.IpFileName: 文件名指针,也可指向 MS-Dos设备名,同时支持文件和设备名,函数分为两个版本 ...
- WinHex数据恢复笔记(二)
续写上次笔记: 1.Winhex数据恢复软件的界面上的所有功能已经介绍了一遍,最主要的还是编程恢复的能力. 今天主要看看记事本的编辑恢复及其相关的一些问题,记事本的 编辑值是ASCII值,所以没有文件 ...
- binlog2sql之MySQL数据闪回实践
DBA或开发人员,有时会误删或者误更新数据,如果是线上环境并且影响较大,就需要能快速回滚.传统恢复方法是利用备份重搭实例,再应用去除错误sql后的binlog来恢复数据.此法费时费力,甚至需要停机维护 ...