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) > 3return HttpResponse('')
            history.append(now)

二、ajax 对接django

http://wuchengyi.com/post/14/

猜你喜欢

转载自www.cnblogs.com/wuchenggong/p/9449068.html