zoukankan      html  css  js  c++  java
  • Django-admin

    1.启动

    django启动后,会加载settings中的install_apps

    INSTALLED_APPS = [
        'django.contrib.admin',
        'django.contrib.auth',
        'django.contrib.contenttypes',
        'django.contrib.sessions',
        'django.contrib.messages',
        'django.contrib.staticfiles',
        'app01.apps.App01Config',
        'rest_framework',
        'corsheaders'
    ]

    from django.contrib import admin

    admin.py:
    from django.contrib.admin.sites import AdminSite, site
    from django.utils.module_loading import autodiscover_modules
    
    def autodiscover():
        autodiscover_modules('admin', register_to=site) # 加载每一个app下的admin.py文件

    2. 注册

    admin会对注册的每个模型表添加增删改查四个url

    admin.site.register(Book)
    
    class BookConfig(admin.ModelAdmin):
        pass
    
    admin.site.register(Book, BookConfig)

    sites中有register方法

    def register(self, model_or_iterable, admin_class=None, **options):
        admin_class = admin_class or ModelAdmin

    如果没有传进自定义的BookConfig类,默认用ModelAdmin

    class AdminSite(object):
        def __init__(self):
            self._register = {}
    
        def register(self, model, admin_class=None):
            admin_class = admin_class or ModelAdmin
            self._registry[model] = admin_class(model, self)
    
    site = AdminSite()

    执行每一个app下的admin.py文件

    from django.contrib import admin
    
    admin.site.register(Book, BookConfig)
    admin.site.register(Publish)

    3.设计url

    格式: path中的函数部分为一个元组,里面第一个参数是列表,第二个和第三个是None

    urlpatterns = [
        path('admin/', admin.site.urls),
        path('test/', ([
            path('index/', views.index),
                       ], None, None))
    ]

    model._meta.model_name: 模型表的名称

    model._meta.app_label :模型表所在的app的名称

    django在启动的过程中,会自动加载每一个app下的apps文件,apps文件中的app名_config类有一个ready方法,会自动执行

    1.启动

    from django.apps import AppConfig
    from django.utils.module_loading import autodiscover_modules
    
    class StarkConfig(AppConfig):
        name = 'stark'
    
        def ready(self):
            autodiscover_modules("stark")

    2. 注册

    class AdminSite(object):
        
        def __init__(self):
            self._registry = {}
    
        def register(self, model, admin_class=None):
            if not admin_class:
                admin_class = ModelAdmin
    
            self._registry[model] = admin_class(model, self)

    3. 设计url

  • 相关阅读:
    Ubuntu apt-get update 失败
    Ubuntu无法访问windows分区
    Python实现使用tkinter弹出输入框输入数字, 具有确定输入和清除功能
    如何更改监控器的默认计数器
    健壮的 Java 基准测试
    从虚拟机视角谈 Java 应用性能优化
    LoadRunner如何调用外部函数
    git安装与上传
    Loadrunner安装与破解【转】
    性能测试方法【转】
  • 原文地址:https://www.cnblogs.com/s593941/p/10158764.html
Copyright © 2011-2022 走看看