• Django admin参数配置


    admin参数配置

    admin 启动

      admin: Django的后台数据管理的web版本

      针对Food表,url:

        http://127.0.0.1:8000/admin/app02/food/  # 查询页面

        http://127.0.0.1:8000/admin/app02/food/add/  # 增加页面

        http://127.0.0.1:8000/admin/app02/food/1/change/  # 修改页面

        http://127.0.0.1:8000/admin/app02/food/2/delete/  # 删除页面

      加载setting中install_app

    1 from django.contrib import admin
    2 autodiscover_modules('admin')

    注册

    在app01文件夹下的admin.py中注册models中的类

    1 class BookConfig(admin.ModelAdmin):
    2     list_display = ['title', 'price', 'publishDate', 'publish']  # list_display中的字段不能是ManyToManyField。列表中写的都是字段字符串。

     

    设置指定的字段可以点击跳转,默认左侧第一列,可以设置多个字段。list_display_links必须在list_display的后边,不然就会报错。显示查找不到list_display_links中括号中的字段名。

        list_display_links = ['price', 'title']  # 设置指定的字段可以点击跳转,默认左侧第一列,可以设置多个字段。列表中写的都是字段字符串。

      字面上看就可以发现红色框中的字体与右侧两列的不同。

    过滤器

    1     list_filter = ['title', 'publish', 'authors']  # 过滤器的过滤条件,列表中写的都是字段字符串。

    增加搜索框

      列表内的字段为搜索框中输入内容查找时的匹配数据集合,查找时采用模糊匹配,将查到的结果全部显示出来。
        search_fields = ['title', 'price']  # 增加搜索框,列表内的字段为搜索框中输入内容查找时的匹配数据集合。列表中写的都是字段字符串。

      实际注册的语句,括号中第一个参数填写model中的类名,第二个写的是admin.py中的单独设置的类名。

     1 admin.site.register(Book, BookConfig) # 实际注册的语句,括号中以一个参数填写model中的类名,第二个写的是admin.py中的单独设置类名。 

       当没有设置单独的类名时:

     1 admin.site.register(Food) # 只写一个models中的类名即可。 

      源码如下:

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

      由源码可以看出,当第二个参数没有参数传入时,默认使用None。

    批量操作

    1 def patch_init(self, request, queryset):
    2     queryset.update(price=0)
    3 patch_init.short_description = '价格初始化'
    4 actions = [patch_init] # 将上边设置的批量操作添加到下拉菜单中

      queryset为选中的数据集合。

      结果如下:

      在批量操作下拉菜单中多出一个设置的选项,使用此选项可以进行批量操作。

     源码中实现的顺序

       源码::django.contrib.admin.sites模块

     1 class AdminSite(object):
     2 
     3     def __init__(self):
     4         self._registry = {}
     5         
     6     def register(self, model, admin_class = None):
     7         # 设置配置类
     8         if not admin_class:
     9             admin_class = ModelAdmin
    10         
    11         self._registry[model] = admin_class(model, self)
    12 
    13 site = AdminSite()

      加载每一个app下的admin.py文件:

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

    设计url

    知识点

      url(r'index/', views.index)  # index不能带括号

      url方法的分发

        分发

        (二级分发)

    1 url(r'test/',([
    2     url(r'yuan/',([
    3         url(r'aaa/', aaa),
    4         url(r'bbb/', bbb),
    5         url(r'ccc/', ccc),
    6                    ],None, None)),  # 第一个None是app名字,第二个None是名称空间名字,列表中放url。
    7 
    8     url(r'alex', alex),
    9                ], None, None))     

      针对Food表,url:

        http://127.0.0.1:8000/admin/app02/food/

        http://127.0.0.1:8000/admin/app02/food/add/

        http://127.0.0.1:8000/admin/app02/food/1/change/

        http://127.0.0.1:8000/admin/app02/food/2/delete/

    1 model._meta.model_name:  # 模型表的名称
    2 model._meta.app_label:  # 模型表所在的app的名称

      config_obj:某个model的配置类(自定义配置类或者默认配置类)对象

      仿照admin实现一个自定义的增删改查的组件

        (1) 启动

    1 class StarkConfig(AppConfig):
    2 
    3 name = 'stark'
    4 
    5 def ready(self):
    6     autodiscover_modules('stark')

        (2) 注册

          待续...

    Django基础内容

    Django创建app命名

     1 python manage.py startapp app01 

      startapp app名字

    admin汉化

      settings.py文件的:

        LANGUAGE_CODE 设置为 ZH-hans。
      Django将各个模块放在不同的py文件中只是为了解耦。将所有的文件放在同一个py文件中也是完全可以的。
  • 相关阅读:
    面试问题记录-C++
    面试问题记录-网络
    二叉树
    75. Sort Colors 荷兰国旗问题
    桶排序
    数据结构-堆
    快速排序
    第六章 数据库原理
    第五章 Java Web
    第四章 java基础知识
  • 原文地址:https://www.cnblogs.com/ZN-225/p/9542857.html
Copyright © 2020-2023  润新知