CRM项目之stark组件(2)

那么从今天开始呢,我们就要开始设计属于我们自己的admin组件,起个名字就叫stark吧(当然你愿意叫什么都可以)。

stark组件之四步走

仿照admin组件实现流程,stark组件要实现四件事情:

step1

djagno启动后要能够执行每一个app下的名为stark.py的文件(需要单独创建)

① 在settings配置文件中,确保

INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
"crm",
"stark.apps.StarkConfig",
]

② 在stark.apps.StarkConfig类中引入ready方法

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在启动后首先会读取settings中变量INSTALL_APP中的每一个app,读取的类如果有ready方法,便会执行。

step2

基于一个单例对象实现model类注册

class AdminSite(object):
"""
stark组件的全局类
""" def __init__(self):
self._registry = {} def register(self, model, admin_class=None):
# 设置配置类
if not admin_class:
admin_class = ModelStark self._registry[model] = admin_class(model) site = AdminSite()

step3

为注册的所有的model设计增删改查四个URL,以Book类为例,动态生成如下4条URL:

http://127.0.0.1:8000/admin/app01/book/
http://127.0.0.1:8000/admin/app01/book/add/
http://127.0.0.1:8000/admin/app01/book/2/change/
http://127.0.0.1:8000/admin/app01/book/2/delete/

step4

设计增删改查对应的视图函数(这是整个组件最核心的部分) 

 

上一篇:【Android Developers Training】 49. 轻松录制视频


下一篇:python下ssh的简单实现