day91---Django的Admin初识

1. Django Admin的介绍

Django内置的Admin是对于model中对应的数据表可以用web界面的形式进行增删改查提供的组件

Django自动管理工具是django.contrib的一部分,在项目中的settings.py文件中的INSTALLED_APPS来配置

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    # 自定义的app
    'yange.apps.YangeConfig',
]

2. Django Admin的内部依赖

  • 依赖APP

django.contrib.auth
django.contrib.contenttypes
django.contrib.messages
django.contrib.sessions
  • 模板的context_processors

django.contrib.auth.context_processors.auth
django.contrib.messages.context_processors.messages
  • 中间件

django.contrib.auth.middleware.AuthenticationMiddleware 
django.contrib.messages.middleware.MessageMiddleware

3. 激活和使用Django Admin

  • 在生成项目时只要启用admin,django就会自动设置admin组件。可以在urls.py路由系统中查看相关配置

    from django.conf.urls import url
    from django.contrib import admin
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]
  • 只要配置好这些信息,启动项目后,admin就可以正常运行了

  • 程序启动之后,打开http://127.0.0.1:8000/admin就可以进入django admin的登录界面。通过执行python manager.py createsuperuser命令来创建超级用户,即可登录进django admin中

5. Django Admin的路由映射关系

默认的路由映射

当urls.py中默认的路由映射关系配置好之后,会自动产生一些默认的路由映射关系

/admin/
/admin/login/
/admin/logout/
/admin/password_change/
/admin/password_change/done/

数据结构化创建之后的映射关系

/admin/auth/user/
/admin/auth/user/add/
/admin/auth/user/.../delete/
/admin/auth/user/.../change/
/admin/auth/user/history/
/admin/auth/group/
/admin/auth/group/add/
/admin/auth/group/.../delete/
/admin/auth/group/.../change/
/admin/auth/group/history/

创建数据表结构后自动关联的路由映射

/admin/app名称/model表名/              # 显示表数据
/admin/app名称/model表名/add/          # 添加表数据
/admin/app名称/model表名/.../delete/   # 删除表数据
/admin/app名称/model表名/.../change/   # 修改表数据
/admin/app名称/model表名/history/      # 操作表数据的历史记录
...

6. Django Admin的注册

在admin.py中只需要将models.py中的某个类注册,即可在Admin中实现增删改查的功能

from django.contrib import admin
from . import models
admin.site.register(models.UserInfo)

如果想定制更多的功能,可以利用ModelAdmin进行操作

# 方式一:
@admin.register(models.UserInfo)
# 第一个参数可以是列表(第二个参数是被省略的基类)
class UserInfoConfig(admin.ModelAdmin):
    list_display = ['id', 'username', 'password']
    ordering = ['id']
#
# 方式二:
class GroupInfoConfig(admin.ModelAdmin):
    list_display = ['id', 'name', 'level']
    ordering = ['id']
admin.site.register(models.GroupInfo, GroupInfoConfig)
# 第一个参数可以是列表

Admin注册的说明

  • 在注册Django的Admin时,使用admin.site.register(UserInfo),实际上中间是有两个参数的,第二个参数省略了默认的基类admin.ModelAdmin

  • 在使用定制的功能时,需要自定义一个类,并且继承父类admin.ModelAdmin,最后注册的时候把自定义的类传入到第二个参数即可

  • 没有指定第二个参数时,使用默认基类的配置

  • 指定了自定义的类之后,会先从自定义中查找配置,如果有配置参数就使用自定义类中的配置,没有则使用基类的配置

ModelAdmin中提供了大量的可定制功能

posted @ 2018-03-08 21:54  _岩哥  阅读(76)  评论(0)    收藏  举报