zoukankan      html  css  js  c++  java
  • Django项目总结:中间件,分页器,验证码

    【中间件】

    -- 是一个轻量级的,底层的插件,可以介入Django的请求和响应过程

    -- 中间件的本质就是一个python类

    -- 面向切面编程(Aspect Oriented Programming)简称AOP。

    -- AOP的主要实现目的是针对业务处理过程中的切面进行提取,它所面对的是处理过程中的某个步骤或阶段,以获得逻辑过程中各部分之间低耦合的隔离效果。

    -- 调用顺序

      -- 中间件注册的时候是一个列表

      -- 如果我们没有在切点处直接进行返回,中间件会依次执行

      -- 如果我们直接进行了返回,后续中间件就不再执行了

    【切入函数】

    -- __init__:

      -- 没有参数,服务器响应第一个请求的时候自动调用,用户确定是否启用该中间件

    -- process_request(self,request):

      -- 在执行视图前被调用,每个请求上都会调用,不主动进行返回或返回HttpResponse对象

    -- process_view(self,request,view_func,view_args,view_kwargs):

      -- 调用视图之前执行,每个请求都会调用,不主动进行返回或返回HttpResponse对象

    -- process_template_response(self,request,response):

      -- 在视图刚好执行完后进行调用,每个请求都会调用,不主动进行返回或返回HttpResponse对象

    -- process_response(self,request,response):

      -- 所有响应返回浏览器之前调用,每个请求都会调用,不主动进行返回或返回HttpResponse对象

    -- process_exception(self,request,exception):

      -- 当视图抛出异常时调用,不主动进行返回或返回HttpResponse对象

    -- 切面:获取的东西,如:参数

     

    【自定义中间件流程】

    1. 在工程目录下创建middleware目录

    2. 目录中创建一个python文件

    3. 在python文件中导入中间件的基类

      from django.utils.deprecation import MiddlewareMixin

    4. 在类中根据功能需求,创建切入需求类,重写切入点方法

      class LearnAOP(MiddlewareMixin):

      def process_request(self,request):

      print('request的路径',request.GET.path)

    5. 启用中间件,在settings中进行配置,MIDDLEWARE中添加

      middleware.文件名.类名

    【设定时间内的点击频率】

    【CSRF豁免】

    【分页】

    -- django提供了分页的工具,存在于django.core中 

      -- Paginator   : 数据分页工具

      -- Page  : 具体的某一页面

    -- Paginator: 

      -- 对象创建:   Paginator(数据集,每一页数据数)

    -- 属性: 

      -- count对象总数

      -- num_pages:页面总数

      -- page_range: 页码列表,从1开始

    -- 方法:  page(整数): 获得一个page对象

     

    常见错误: 

    -- InvalidPage:page()传递无效页码

    -- PageNotAnInteger:page()传递的不是整数

    -- Empty:page()传递的值有效,但是没有数据

    -- Page:对象获得,通过Paginator的page()方法获得

    -- 属性:

      -- object_list:  当前页面上所有的数据对象

      -- number:  当前页的页码值

      --paginator:  当前page关联的Paginator对象

     

    方法:

    -- has_next()  :判断是否有下一页

    -- has_previous():判断是否有上一页

    -- has_other_pages():判断是否有上一页或下一页

    -- next_page_number():返回下一页的页码

    -- previous_page_number():返回上一页的页码 

    -- len():返回当前页的数据的个数

    【分页器:目录+跳转】

    优化

     

    【绘图和验证码】

    字体导入

    将验证码添加到注册中

    【点击验证码图片刷新】

    js点击图片事件

    【富文本】

    -- Rich Text Format(RTF),添加样式的文档,和HTML有很多相似的地方

    -- django的插件:tinymce

      -- pip install django-tinymce

    -- 用处大约有两种

      -- 在后台管理中使用

      -- 在页面中使用,通常用来作博客

    -- 后台中使用:

      -- 配置settings.py文件

        -- INSTALLED_APPS 添加  tinymce 应用

    富文本放在页面中

    从现在开始,种下梦想中的参天大树
  • 相关阅读:
    python 判断矩阵中每行非零个数的方法
    用Python 绘制分布(折线)图
    统计numpy数组中每个值出现的个数
    pandas 获取不符合条件的dataframe
    Python 中如何判断 list 中是否包含某个元素
    docker与Spring boot的集成:docker-maven-plugin使用
    处理kdevtmpfsi挖矿病毒
    使用docker-maven-plugin推送镜像到远程docker服务器
    docker 开启2375端口,提供外部访问docker
    Spring Boot 配置优先级顺序
  • 原文地址:https://www.cnblogs.com/dc2019/p/13357666.html
Copyright © 2011-2022 走看看