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 ...
随机推荐
- hibernate框架学习第二天:核心API、工具类、事务、查询、方言、主键生成策略等
核心API Configuration 描述的是一个封装所有配置信息的对象 1.加载hibernate.properties(非主流,早期) Configuration conf = new Conf ...
- canvas - 简单画板
截图: Demo:Demo 上代码:. <!DOCTYPE html> <html lang="en"> <head> <meta cha ...
- 028_shell脚本递归求值
一. #!/bin/sh factorial() { if [ "$1" -gt "1" ]; then i=`expr $1 - 1` j=`factoria ...
- mybatis:递归查询,关联查询传入多个参数
需求是:递归查询资源 1.资源类 EntityBaseResource: public final class EntityBaseResource { private Long resID = 0l ...
- thymeleaf:访问list,map等
1.map 在后端放入一个map Map<String, String> mapDict = serviceBaseDict.selectMap(ConstantDictType.SYSI ...
- Android apk互调
1.启动另外一个应用程序的主Activity. //这些代码是启动另外的一个应用程序的主Activity,当然也可以启动任意一个Activity ComponentName componetName ...
- HSSFWorkbook操作excel读写
//exlel读操作 MultipartHttpServletRequest multipartRequest = (MultipartHttpServletRequest) request; Ite ...
- swoole深入学习 2. tcp Server和tcp Client
这节来学习Swoole最基础的Server和Client.会通过创建一个tcp Server来讲解. server <?php class Server { private $serv; pub ...
- iOS -- Effective Objective-C 阅读笔记 (3)
1: 理解 属性 的概念 属性会自动生成存取方法, 可以利用点语法调用, 若不想编译器自动合成存取方法, 可以自己实现, 还有另外一种方法, 就是使用 @dynamic 关键字, 它会告诉编译器, ...
- 三.NFS存储服务
01. 课程回顾 备份服务概念介绍(rsync备份服务利用相应算法,实现增量数据同步) 备份服务工作方式说明: 1. 本地数据备份同步方式(类似cp命令) 2. 远程数据备份同步方式(类似scp命令) ...