1. stark也是一个app(用startapp stark创建),目标时把这个做成一个可以拔插的组件 2. setting文件下INSTALLED_APPS 路径要配置好(app的注册) 3. 写好sites.py中的site类,实例化出一个类对象,其他文件都直接引用这个类对象(单例模式), 4. 模型类和数据库也要确定好
本节内容:
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. setting文件下INSTALLED_APPS 路径要配置好(app的注册) 3. 写好sites.py中的site类,实例化出一个类对象,其他文件都直接引用这个类对象(单例模式), 4.模型类和数据库也要确定好
二. 前期准备工作
1.1 在stark文件的app.py里面加入配置
from django.apps import AppConfig from django.utils.module_loading import autodiscover_modules class StarkConfig(AppConfig): name = 'stark' def ready(self): autodiscover_modules('stark') # 必须要配置这个方法,在启动django项目的时候才能自动的去每个app下,去自动加载stark.py文件
# 在每一个app文件夹下都要创建一个stark.py文件,这样在配置好url后,启动django项目,才会自动去每一个app下加载该文件
三、stark组件之注册
这里主要做了两件事情
1. 在stark源码中我们写好starksite类,并实例化一个对象
2.在相应的APP下,注册site
# 在stark文件加的stark.py文件中定义注册方法
from django.shortcuts import HttpResponse,render from django.urls import path,re_path #主要有两个类,一个是基本类Starksite,一个是配置类Modelsite class Modelstark(): #配置类 list_display = ['__str__'] def __init__(self,model): self.model = model class Starksite(): ... #Starksite 基本类 #model 注册类模型 #ModelStark 注册模型类的配置类 ''' def __init__(self): self._registry = {} #注册的方法 def registry(self,model, starkclass=None): #传参,注册的模型类和对应的配置类,这里传的都是类名,实际就是调用函数,所以要用到self starkclass = starkclass or Modelstark # 若自定制有子类配置类对象则用传入的子类的,没有用默认父类的 self._registry[model] = stark_class[model] 该模型类为键,该模型了的配置类为值 site = Starksite() #实例化对象
# 在app01下的stark.py文件里面实现注册
from stark.service.sites import site,Modelstark from .model import * #可以定制化配置类 class BookConfig(ModelStark): #这里继承ModelStark,是如果自定制类中有list_display,就返回自定制的lsit_display,没有就返回默认的父类的list_display def show_authors: return '|',join([obj.name for obj in obj.authors]) lsit_display = ['title', 'price', show_authors] #这里的不加括号是用反射,展示数据 site.register(Book,BookConfig) site.register(Publish) site.register(Author) print(site._registry) #指定值的键值对,注册多少就有多少,django自带的要多两个,内部自带的
四、stark组件之类变量查询
回顾我们的面向对象的知识:
类变量的查询的先后顺序(有继承关系的):
1、首先在自己对象的内存空间中找该变量,找不到的话
2、就到自己的类空间中找,还找不到的话
3、就到自己的父类空间中找,一直逐级往上找,再找不到的话,就报错
五、stark组件之url二级分发
这里我们模仿,admin组件的使用静态方法进行url二级分发
1、首先在urls中配置path路径,(这一步属于用户操作) 2、在基本类中配置好一级分发 3、在配置类中配置好二级分发
六、静态文件和模板的引入问题
主要这里我们要将stark组件做成可插拔式的,所有静态文件和模板文件都要放在我们的stark文件夹下。
这样就可以保证用户在使用我们的stark组件时,不会缺少配置文件。
七、stark组件展示表格的体数据(即展示记录)
这个统一在最后面的实例中有详解
八、stark组件之展示表头数据
这个统一在最后面的实例中有详解