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文件中也是完全可以的。
原文地址:https://www.cnblogs.com/ZN-225/p/9542857.html