zoukankan      html  css  js  c++  java
  • Django——基于类的视图源码分析 一

    基于类的视图(Class-based view)是Django 1.3引入的新的视图编写方式,用于取代以前基于函数(Function-based)方式。
    借助于OO和Python中方便的多重继承特性,基于类的视图可以提供更好的抽象与复用能力。 新的通用视图将更加优雅。

    Django的文档较为丰富,但在实际开发中往往仍显得不够,很多时候还是需要深入到源代码当中一探究竟。为此,仔细整理了一下基于类的视图的实现方式。期望对以后的开发能够提供更加清晰、直接的参考。

    说明: Django大量应用了多重继承特性。将一些通用的功能性代码拆分混入类(Mixin),需要这些混入类的代码时,只需要将混入类加入到类的继承列表中即 可——请注意顺序,左侧的类具有较高权限,将覆盖右侧继承类中的同名函数。为了说明方便,将这些混入类(Mixin)成为"工具类”。

    源码组织

    所有的视图相关代码,均存放与django/views/generic目录中:

    • base.py 保存视图的抽象类,TemplateView和RedirectView,及工具类TemplateResponseMixin的代码

    • create_update.py 基于函数的通用视图。已标记为deprecated

    • date_based.py 基于函数的日期相关通用视图。已标记为deprecated

    • dates.py 新的基于类的日期相关通用视图。用于取代date_based.py

    • detail.py 基于类的单个对象显示相关的视图和工具类

    • edit.py 基于类的对象编辑相关的视图和工具类

    • list.py 基于类的对象列表显示相关视图和工具类

    • list_detail.py 基于函数的列表、显示函数。已标记为deprecated

    • simply.py 基于函数的工具常用工具试图。已标记为deprecated

    从逻辑上来看,源代码被组织为抽象基类,工具类(Mixin),常规(具体)实现和基于模型的实现。

  • 相关阅读:
    Apply Custom Filter on Lookup Field in PowerApps using Script
    Lookup and Search Views in Model-Driven Apps
    Add an embedded canvas app on a model-driven form
    Set up powerapps to use SharePoint Online
    SharePoint as document management storage for Dynamics CRM
    Lookup Field in collect
    Filter Search Lookup in PowerApps
    产品面试-谈谈你最喜欢的APP--知乎
    什么是需求,怎么做需求分析?怎么管理需求?产品经理必知必会
    ukey登录方案
  • 原文地址:https://www.cnblogs.com/Simon-xm/p/4038306.html
Copyright © 2011-2022 走看看