zoukankan      html  css  js  c++  java
  • 中间件

    中间件

    什么是中间件?

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

    如何自定义中间件?

    3步骤

    第一步 在应用下键立一个文件夹(随意取名字)在文件夹下创建一个py文件名字随意取
    
    第2步 在py文件中引入from django.utils.deprecation import MiddlewareMixin 在定义一个中间件(类)
    
    第3步在配置文件 配置
    'rbac.middlewares.mymiddlewares.Auth',#配置中间件
    rbac下自己创建的middlewares文件夹下的mymiddlewares.py文件下的Auth类
    
    
    中间件有5个方法
    process_request(self,request)
    process_view(self, request, view_func, view_args, view_kwargs)
    process_template_response(self,request,response)
    process_exception(self, request, exception)
    process_response(self, request, response)
    

    实列

    在应用下键立一个文件夹(随意取名字)在创建一个py文件 py文件下引入from django.utils.deprecation import MiddlewareMixin 定义一个类
    配置文件配置
    
    
    from django.utils.deprecation import MiddlewareMixin
    
    class MD1(MiddlewareMixin):
        #自定义中间件,不是必须要有下面这两个方法,有request方法说明请求来了要处理,有response方法说明响应出去时需要处理,不是非要写这两个方法,如果你没写process_response方法,那么会一层一层的往上找,哪个中间件有process_response方法就将返回对象给哪个中间件
        def process_request(self, request):
            print("MD1里面的 process_request")
    
        def process_response(self, request, response):
            print("MD1里面的 process_response")
            return response
    

    中间件的5个方法

    1、process_request : 请求进来时,权限认证 。
    
    2、process_view : 路由匹配之后,能够得到视图函数
    
    3、process_exception : 异常时执行
    
    4、process_template_responseprocess : 模板渲染时执行
    
    5、process_response : 请求有响应时执行
    
    

    中间件方法执行流程

    img

    
    

    请求生命周期

    img

    基于多表的表单作业 增删改查

    查看书籍思路

    因为前端代码要显示全部.all拿到全部数据 注意 要找关了的表要数据要for循环
    

    添加书籍思路

    当get请求来 就要传对象过去 为了显示  前端要for循环
    当post请求来 就要要注意authors = request.POST.getlist('authors')获得多个值
    要删除安全验证 多对多的数据
    
    
    
    

    删除用户思路

    和单表一样 
    
    

    修改表思路

    <a href="{% url 'editbook' book_obj.pk %}" class="btn btn-warning">编辑</a>
    
    
  • 相关阅读:
    linux网络配置
    第二章 以太网和数据封装
    linux用户权限
    第一章 网络互联
    linux学习之文件系统
    史上最全Java学习视频下载地址分享
    JAVA高级特性之集合
    Map集合不继承Collection接口,(HashMap类和TreeMap类)---输出结果,如果将Key值修改为首位不为0,HashMap输出就是随机顺序的,求指导,为什么为会这样???
    java中this关键字
    Java long数据类型---网上学习到的资料
  • 原文地址:https://www.cnblogs.com/saoqiang/p/12397071.html
Copyright © 2011-2022 走看看