【Stark组件8】之统一的CURD概要

day112-1 && day112-2

Part1. Stark统一的增删改查curd概要

方法和函数的区别【方法在类里面】

制作生成器yield节省内存的开支

modelForm--快速定制增删改查

inclusion_tag

上述必备知识点

 

为了增加用户友好度---在编辑之后如何跳回条件页,即保留原搜索条件

 

Part2. 动态生成URL的思路及具体流程

 

继承关系之静态字段

单例模式---通过模块导入多次

类的继承--关注self是谁

类名 可以当字典的key或参数

路由分发name,namespace,路由分发可以嵌套,以及反向生成别名URL,如果有多个namespace,反向生成URL要用namespace:namespace:xxx

include本质返回元组的三个元素(列表,name,namespace)

自定义钩子函数

加了@property的方法执行的时候不加括号

 

ready是干什么的?【疑惑】

【Stark组件8】之统一的CURD概要

 

当程序启动时,

1.去每个APP目录下找stark.py并加载

通过site在stark.py中构造了一个单例模式

对于单例模式_registry中有个空字典

通过register方法往字典_registry中添加数据

register的第二个参数是个类名,如果有值,则用传入的值,否则就用默认的StarkConfig

在StarkConfig中实例化对象,内部是封装对象

 

确认之后把类名和实例化的对象全部加到_registry中

剩下就是在路由url.py中导入它

到最后全部定位到4个方法中它path('stark/', site.urls),

用@property(执行的时候不加括号)

def urls()

urls又调用了get_urls,在get_urls中定义了一个urlpatterns,然后用for循环做了一次路由分发,在路由分发中又找到了每个类自己的urls,get_urls执行它,由定义了一个钩子函数extra_url

self是Config,在self中又封装了各自的model_class

最后请求进来全部定位到四个view方法中去了

 

self.model_class是当前访问的类,当前访问哪个类,他就指哪个类