,斯塔克组件是仿照django的管理模块开发的一套组件,它的作用是在网页上对注册的数据表进行增删改查操作
<强> 1,创建的应用,在设置。py中注册的应用强>
的应用程序专门用于存放自定义组件的核心代码。
管理。py@stark_demo祝辞startapp鲜明的
在settings.py文件注册斯塔克:
INSTALLED_APPS=[ “django.contrib.admin”, “django.contrib.auth”, “django.contrib.contenttypes”, “django.contrib.sessions”, “django.contrib.messages”, “django.contrib.staticfiles”, “app01.apps.App01Config”, “stark.apps.StarkConfig”, )
<强> 2项目启动加载每一个应用程序下的所有鲜明的文件强>
在鲜明的项目的apps.py文件加上下面的代码,准备函数的作用是让Django在启动时自动扫描每一个应用程序下面的stark.py文件
django。应用进口AppConfig 从django.utils。module_loading进口autodiscover_modules 类StarkConfig (AppConfig): name=懊飨浴? #程序启动时,扫描程序下得指定文件(stark.py)并执行 def准备(自我): autodiscover_modules(“的”)
<强> 3,app01/模型。py中创建模型强>
类用户信息(models.Model): name=models.CharField (max_length=32) 年龄=models.IntegerField () def __str__(自我): 返回self.name 类的书(models.Model): title=models.CharField (max_length=32) def __str__(自我): 返回self.title
执行数据迁移和创建超级用户操作:
makemigrations 迁移 createsuperuser(元yuan1234)
<强> 4,管理。py配置强>
django。contrib进口管理 #这里登记您的模型。 从得进口* 类UserAdmin (admin.ModelAdmin): 按照list_display=[“pk”、“名称”,“年龄”) list_filter=(“名字”,“年龄”) 行动#定制具体方法 def func(自我,请求,queryset): queryset.update(=44岁) 函数。short_description="批量初始化操作“ 行动=(函数) admin.site。UserAdmin注册(用户信息) admin.site.register(书)
<强> 5,程序运行显示效果强>
<强> 1,首先创建一个Python包,创建一个stark.py文件强>
<强> 2,斯塔克/服务/鲜明。py(单例)强>
类ModelStark(对象): 按照list_display=[] def __init__(自我,模型,网站): self.model=模型 self.site=网站 类StarkSite(对象): def __init__(自我): 自我。_registry={} def寄存器(自我、模型stark_class=None, * *选项): 如果不是stark_class: #如果注册的时候没有自定义配置类,执行 stark_class=ModelStark #配置类 #将配置类对象加到_registry字典中,键为模型类 自我。_registry(模型)=stark_class(模型、自我)# _registry={“模型”:stark_class(模型)} 网站=StarkSite ()
(1)在使用admin组件的时候,是在我们注册时候调用一个单例对象网站进行注册.stark中同样生成了一个网站单例对象,然后在app01的斯塔克文件导入:
从stark.service。鲜明的导入网站
这样就通过使用python模块的方式实现了单例模式。
(2)通过单例对象网站调用注册方法,所以需要在StarkSite类创建一个注册方法。
<强> 3,app01/鲜明。py 强>
从app01导入模型 从stark.service。鲜明的导入站点,ModelStark #自定义配置类 类UserConfig (ModelStark): 通过 site.register(模型。用户信息,UserConfig) site.register (models.Book) 打印(_registry site._registry)
注册之后,启动项目就会将我们注册的模型类添加到字典_registry中。