Django的组件使用及原理详解

  

,斯塔克组件是仿照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,程序运行显示效果

  

 Django斯塔克组件使用及原理详解

  


  

  

<强> 1,首先创建一个Python包,创建一个stark.py文件

  

 Django斯塔克组件使用及原理详解

  

<强> 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中。

Django的组件使用及原理详解