Django Admin

简介

Django内置的Admin是对于model中对应的数据表进行增删改查提供的组件。

基本用法:

  1. 配置路由,项目中默认已经配置:

    from django.conf.urls import url
    from django.contrib import admin
    
    urlpatterns = [
            url(r'^admin/', admin.site.urls),
        ]
  2. 注册model:

    from django.contrib import admin
    from . import models
    
    admin.site.register(models.UserInfo)
  3. admin会自动创建路由映射关系,格式如下:

    /admin/app名称/model名称/ 列表
    /admin/app名称/model名称/add/ 增加
    /admin/app名称/model名称/ID值/change/ 修改
    /admin/app名称/model名称/ID值/delete/ 删除

    ……

定制Admin

通过将model注册admin.site.register(models.UserInfo),可以提供基本后台管理的功能。查看源码,register()函数默认还接收了第二个参数:ModelAdmin,它是一个配置类,实例化时接收model和site对象,为给定model封装所有管理员选项和功能。因此通过派生ModelAdmin类,即可自定义个性化Admin:

from django.contrib import admin
from . import models


# 方式一:
class MyConfig(admin.ModelAdmin):
    # 自定义显示字段
    list_display = ['id', 'name', 'email']

admin.site.register(models.UserInfo, MyConfig)

# 方式二:
@admin.register(models.UserInfo)
class MyConfig(admin.ModelAdmin):
    list_display = ['id', 'name', 'email']

可自定义选项参见:http://www.cnblogs.com/wupeiqi/articles/7444717.html

Admin 路由系统的本质

  1. 加载setting.py配置

    INSTALLED_APPS = [
        'django.contrib.admin',
        # .......
    ]
  2. 寻找admin模块,django.contrib.admin__init__.py中:

    def autodiscover():
        autodiscover_modules('admin', register_to=site)

    说明:Django自动去所有应用寻找admin.py模块,并执行

  3. 执行admin.py,注册model:

    from django.contrib import admin
    from . import models
    
    admin.site.register(models.UserInfo)
  4. admin.site.register()中为site对象的_registry字典赋值,key是model, value是model的配置类(具体查看源码)

    self._registry[model] = admin_class(model, self)
  5. 执行路由映射关系

    url(r'^admin/', admin.site.urls)

    再次调用site对象,执行.urls方法,循环site对象的_registry属性,根据app和model名称,生成Django后台管理的url映射。

  6. 我们在Django后台中执行的增删改查,其实就是执行了ModelAdmin中的以下方法:

    1. def changelist_view() 显示列表
    2. def add_view()增加
    3. def change_view() 修改
    4. def delete_view() 删除
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值