本节内容:
1、写stark的前期准备工作
2、stark组件之启动
3、stark组件之注册功能
4、stark组件之类变量查询
5、stark组件之url二级分发
6、静态文件和模板的引入问题
7、stark组件展示表格的体数据(即展示记录)
8、stark组件之展示表头数据
9、stark组件之默认列(为所有的查看页面默认显示编辑、删除、选择按钮)
一、写stark的前期准备工作
准备工作:
1、stark也是一个app(用startapp stark创建),目标把这个做成一个可插拔的组件
2、settings文件下的INSTALLED_APPS 路径要配置好
3、写好sites.py中的site类,实例化出一个类对象,其他文件都直接引用这个类对象(单例模式),
4、当然啦,你的模型类文件也要准备好,使用哪个数据库也要确定
二、stark组件之启动
启动所有app下的stark.py文件
(在stark文件夹下的apps.py文件中的class StarkConfig(AppConfig):添加该方法)
def ready(self): # 这一句自动去加载所有的app下的stark.py文件
autodiscover_modules("stark")
“python
添加位置:在stark文件夹下的apps.py文件
from django.apps import AppConfig
from django.utils.module_loading import autodiscover_modules
class StarkConfig(AppConfig):
name = ‘stark’
def ready(self): # 该方法默认去加载所有APP下的stark.py文件
autodiscover_modules("stark")
## 三、stark组件之注册功能
这里主要做两件事:
1、在stark源码中,写好我们的starksite类,并实例化出一个site对象(单例对象供注册使用),
2、在相应的APP下,注册site
```python
# stark.py文件源码
from django.shortcuts import HttpResponse,render
from django.urls import path,re_path
class ModelStark(): # 配置类
list_display = ["__str__"]
def __init__(self,model):
self.model=model
class StarkSite():
'''
# StarkSite: 基本类
# model: 注册模型类
# ModelStark: 注册模型类的配置类
'''
def __init__(self): # 定义这个字典在url二级分发时体现出来作用,
self._registry = {} # model_class class -> admin_class instance
# 注册方法,关键的两步
def register(self,model,stark_class=None): # 传参,注册模型类和对应的配置类,这里传的都是类名,所以在调用方法的时候,实际上是调用函数,所以要传self
stark_class = stark_class or ModelStark # 若自定制有子类配置类对象则用传入的子类的,没有用默认父类的
self._registry[model] = stark_class(model) # 该模型类为键,该模型了的配置类为值
site=StarkSite()
四、stark组件之类变量查询
回顾我们的面向对象的知识:
类变量的查询的先后顺序(有继承关系的):
1、首先在自己对象的内存空间中找该变量,找不到的话
2、就到自己的类空间中找,还找不到的话
3、就到自己的父类空间中找,一直逐级往上找,再找不到的话,就报错
五、stark组件之url二级分发
这里我们模仿,admin组件的使用静态方法进行url二级分发
1、首先在urls中配置path路径,(这一步属于用户操作)
2、在基本类中配置好一级分发
3、在配置类中配置好二级分发
六、静态文件和模板的引入问题
主要这里我们要将stark组件做成可插拔式的,所有静态文件和模板文件都要放在我们的stark文件夹下。
这样就可以保证用户在使用我们的stark组件时,不会缺少配置文件。
七、stark组件展示表格的体数据(即展示记录)
这个统一在最后面的实例中有详解
八、stark组件之展示表头数据
这个统一在最后面的实例中有详解