• 进入"运维那点事"后,希望您第一件事就是阅读“关于”栏目,仔细阅读“关于Ctrl+c问题”,不希望误会!

Django Admin

Python框架 彭东稳 7年前 (2017-11-15) 25845次浏览 已收录 0个评论

一、Django Admin

Django最强大的部分之一是自动生成的Admin界面。它读取模型中的元数据来提供一个强大的、生产环境就绪的界面,使内容提供者能立即用它向站点中添加内容。下面看一下如何激活,使用和定制Django的管理界面。

概述

通过使用startproject创建的默认项目模版中,Admin已启用。下面的一些要求作为参考:

1、添加 ‘django.contrib.admin’到INSTALLED_APPS设置中。

2、admin有四个依赖 – django.contrib.aut,django.contrib.contenttypes,django.contrib.messages和django.contrib.sessions;如果这些应用没有在INSTALLED_APPS列表中,那你要把它们添加到该列表中。

3、把django.contrib.messages.context_processors.messages添加到TEMPLATES中DjangoTemplates后台的’context_processors’选项中,同样把django.contrib.auth.middleware.AuthenticationMiddleware和django.contrib.messages.middleware.MessageMiddleware添加到MIDDLEWARE_CLASSES。(这些默认都是激活的,所以如果你手工操作过的话就需要按照以上方法进行设置..)

4、确定应用中的哪些模型应该在Admin界面中可以编辑。

5、修改${app_dir}/admin.py,给每个模型创建一个ModelAdmin类,封装模型自定义的Admin功能和选项。

6、实例化AdminSite并且告诉它你的每一个模块和ModelAdmin类。

7、将AdminSite实例绑定到URLconf。

做了这些步骤之后,你将能够通过你已经绑定的URL来访问Django管理站点(默认是/admin/)。虽然能访问了,但是还需要一个管理员账号来登录,需要提前创建一个管理员账号,如下:

然后就可以去访问:http://IP:PORT/admin/,使用管理员用户登录即可进入到管理后台界面,如下:

Django Admin

二、ModelAdmin

2.1 注册ModelAdmin

ModelAdmin类是模型在Admin界面中的表示形式,需要注册。通常,将它们写入在你的应用中的名为admin.py的文件里。下面来注册一个ModelAdmin:

在上面的例子中,ModelAdmin并没有定义任何自定义的值。因此, 系统将使用默认的Admin 界面。如果对于默认的Admin 界面足够满意,那你根本不需要自己定义ModelAdmin 对象, 你可以直接注册模型类而无需提供ModelAdmin 的描述。那么上面的例子可以简化成:

你还可以用register(*models[, site=django.admin.sites.site])装饰来注册您的ModelAdmin类:

如果不使用默认的AdminSite,可以提供一个或多个模块类来注册ModelAdmin,并且一个可选择的关键参数site(这里使用装饰器来注册需要注册的类和模块的,请特别留意紧跟装饰器后面关于ModelAdmin的声明,前面是Author,后面是PersonAdmin,我的理解是后一种情况下注册的类都可以用PersonAdmin来作为接口):

2.2 ModelAdmin使用示例

继“Django写一个简单投票系统”这篇文章,我们对问题模型(Quesiton)和问题选项模型(Choice)进行注册到Admin后台,这样就可以借助Admin后台来进行添加问题和增加选项了。

Model信息修改如下:

然后在应用的admin.py文件中进行Model注册到Admin后台的操作,如下:

然后Django服务器没有问题的情况下,就可以在Admin界面看到多了polls应用,以及Question和Choice模型,如下:

Django Admin

可以在这个界面进行添加问题,以及给这个问题添加对应的选项。

2.3 ModelAdmin选项

ModelAdmin非常灵活,它有几个选项来处理自定义界面。所有的选项都在ModelAdmin子类中定义:

fields:表示在Admin后台显示某些字段,默认显示所有字段。比如这里添加问题选项时,只需要选择问题以及填写选项即可,看不见vote字段了。

exclude:表示在Admin后台排除某些字段,默认显示所有字段。

search_fields:表示在Admin后台可以搜索某列,开启后在后台会出现搜索框,就可以模糊匹配了。

date_hierarchy:表示添加日期标签过滤,就是可以根据日期分类。

ordering:表示指定某个字段的排序规则。

list_display:表示在后台列表中显示更多的列,默认只显示一个objects。默认列为多对多关系时,就不能像上面那样直接使用了。

比如多对多关系,一本书有多个作者,一个作者也有多本书。

在后台进行管理时,默认提供了一个action动作,是一个删除操作,我们可以根据需要自定义action,如下:

看一下后台界面如下:

Django Admin

这段代码,Django大概的处理方式为,发现actions参数,取函数。然后传入modeladmin、request、以及queryset;然后循环来修改我们选中传到后端的问题。

另外,当我们在Model Field中指定verbose_name参数时,如下配置:

我们在Admin后台就可以看到这个字段别名了,如下显示:

Django Admin

三、Xadmin

Xadmin是GitHub上的开源项目,它是Django admin的超强升级版,提供了强大的插件系统,丰富的内置功能,以及无与伦比的UI主题,使管理系统的实现变得异常简单。详情请参见官方网址


如果您觉得本站对你有帮助,那么可以支付宝扫码捐助以帮助本站更好地发展,在此谢过。
喜欢 (2)
[资助本站您就扫码 谢谢]
分享 (0)

您必须 登录 才能发表评论!