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)),
]

 

posted @ 2019-07-31 15:32  胖啊  阅读(147)  评论(0编辑  收藏  举报