• day72 importlib模块、 setting设置、admin之配置类


    一、importlib 模块
    import importlib

    res = 'confi.setting'
    module = importlib.import_module(res) # 以字符串的行式导入模块,拿到的是该模块名对应的名称空间
    print(module.NAME)

    二、setting设置,有自定义用自定义,没有用默认

    1. 启动文件中给全局大字典设置一个键值对,键:随便一个名子,值就是自定义的文件路径,字符串形式
      注:一定要先设置全局大字典

    start.py
    import os
    import sys
    
    BASE_DIR = os.path.dirname(__file__)
    sys.path.append(BASE_DIR)
    
    os.environ.setdefault('xxx', 'conf.settings')
    # 将自定的setting文件以键值对的形式添加到全局大字典中
    from lib.conf import settings
    
    print(settings.NAME)
    View Code
    
    

     2. lib---conf-- init文件中定义一个单例,

      该单例中的类:1. 将全局的setting文件中的变量以键值对形式放入setting单例对象名称空间中

             2.  同样也把自定义的setting文件中的变量以键值对形式放入setting单例对象名称空间中

    import os
    
    from lib.conf import global_settings
    from conf import settings
    import importlib
    
    class Settings(object):
        def __init__(self):
            for name in dir(global_settings):
                if name.isupper():
                    k= name
                    v = getattr(global_settings,name)
                    setattr(self, k, v)
            models_path = os.environ.get('xxx')
            models = importlib.import_module(models_path)
    
    
            for name in dir(models):
                if name.isupper():
                    k = name
                    v = getattr(models, name)
                    setattr(self, k, v)
    
    settings = Settings()
    View Code

    3. 利用字典的特性,自定义有就用自定义的,没有就用系统默认的

    三、配置类之五大关键性参数, django的默认配置类为ModelAdmin, 所以在自定义配置类时需继承这个默认配置类

      1. list_display= 【‘title',  'price' , 'publish_date'】                    多对多的虚拟字段不支持,数据有多个,不知道你要展示哪个; 从前往后,前面的字段必须要有,后面的不限制

      2. list_display_Links = 【‘title',  'price' , 'publish_date'】         给表字段设置链接配置

      3. search_field = 【‘title',  'price'】              在指定的字段中寻找,title字段中或者price中字段有的,都会被过滤出来

      4. list_filter = 【’publish',  'authors'】             过滤,字段间and关系,外键多对多的字段

      5. patch_init                       定义函数【函数名没所谓】,  action中下拉菜单内容

       

       def   patch_init(self, request, queryset)

          pass

       patch_init.short_description = '批量修改‘

       actions = 【patch_init】

       

    from django.contrib import admin
    from app01 import models
    
    # Register your models here.
    
    class Backend(admin.ModelAdmin):
        list_display = ['title', 'price', 'publish_date']
        list_display_links = ['title', 'publish_date']
        search_fields = ['price', 'title']
        list_filter = ['authors', 'publish']
    
        def patch_init(self, request, queryset):
            pass
        patch_init.short_description = '批量修改'
        actions = [patch_init]
    
    
    admin.site.register(models.Book, Backend)
    admin.site.register(models.Publish,)
    admin.site.register(models.Author, )
    admin.site.register(models.Authordetail)
    View Code

    四、路由分发的本质

           url(r'^test/',([],None,None))

    一级路由: 

    urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^stark/', ([
    url(r'^stark_1/', tark_1),
    url(r'^stark_2/', tark_2),
    url(r'^stark_3/', tark_3),
    ],None,None)),
    ]


    二级路由:

    urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^stark/', ([
    url(r'^stark_1/', ([
    url(r'^stark_1_1/', tark_1_1),
    url(r'^stark_1_2/', tark_1_2),
    ],None, None)),
    url(r'^stark_2/', ([
    url(r'^stark_2_1/', tark_2_1),
    url(r'^stark_2_2/', tark_2_2),
    url(r'^stark_2_3/', tark_2_3),
    ],None, None)),
    url(r'^stark_3/', ([],None, None)),
    ],None,None)),
    ]
  • 相关阅读:
    NFS挂载报错
    关于git的reset指令说明-soft、mixed、hard
    nginx关于限制请求数和连接数
    Jenkins初级使用过程中的异常处理(1)
    Jenkins的初级应用(2)-Invoke Phing targets
    Jenkins的初级应用(1)-Publish Over SSH
    解决Jenkins安装的时区问题
    用Ubuntu快速安装Jenkins
    TIME_WAIT状态过多的排查
    在linux环境下用中文查询数据库
  • 原文地址:https://www.cnblogs.com/qingqinxu/p/11276652.html
Copyright © 2020-2023  润新知