Django:admin管理工具的使用

1、admin组件使用

Django提供了基于web的管理工具

  Django自动管理工具是django.contrib的一部分,我们可以在项目配置文件settings.py里的INSTALLED_APPS看到它

settings.py

INSTALLED_APPS = [
    ‘django.contrib.admin‘,
    ‘django.contrib.auth‘,
    ‘django.contrib.contenttypes‘,
    ‘django.contrib.sessions‘,
    ‘django.contrib.messages‘,
    ‘django.contrib.staticfiles‘,
]

django.contrib是一个强大的功能集,它是Django基本代码的组成部分

2、激活管理工具

  通常会在创建项目时在文件url.py中自动配置好

urls.py

from django.contrib import admin
from django.urls import path

urlpatterns = [
    path(‘admin/‘, admin.site.urls),
]

当这一切配置好之后,Django管理工具就可以运行了

3、admin后台管理界面汉化

  admin后台管理界面默认是英文的,对于我们来说看起来不够方便,因此需要在setting.py文件里进行配置

settings.py

LANGUAGE_CODE = ‘zh-hans‘

TIME_ZONE = ‘Asia/Shanghai‘

4、使用管理工具

启动开发服务器,然后在浏览器中访问http://127.0.0.1:8000/admin/,进入后台管理系统的登录界面,通过python manage.py createsuperuser创建超级用户进行登录

  为了使用admin界面管理某个数据模型,我们需要先注册该数据模型到admin

创建数据模型类:

models.py

class Book(models.Model):
    title = models.CharField( max_length=32)
    publishDate=models.DateField()
    price=models.DecimalField(max_digits=5,decimal_places=2)
    publisher=models.ForeignKey(to="Publish")
    author=models.ManyToManyField(to=‘Author‘)
 
    def __str__(self):
        return self.title

注册到admin:

admin.py中只需将models.py中的某个数据模型类注册,即可在后台中实现对该数据模型中的数据执行增删改查操作,如:

admin.py

admin.site.register(models.Book)

这种方式所能实现的功能比较简单,如果想要进行更多的定制操作,需要利用ModelAdmin进行操作,如:

方式一:
    class BookAdmin(admin.ModelAdmin):
        list_display = (‘title‘, ‘publicDate‘,‘ptice‘,‘publisher‘,‘author‘)
    admin.site.register(models.UserInfo, UserAdmin) # 第一个参数可以是列表
     
 
方式二:
    @admin.register(models.Book)  # 第一个参数可以是列表
    class BookAdmin(admin.ModelAdmin):        list_display = (‘title‘, ‘publicDate‘,‘ptice‘,‘publisher‘,‘author‘)

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

(1)list_display,定制显示的列

(2)list_display_links,定制列可以点击跳转

(3)list_filter,右侧快速筛选

(4)list_select_related,定制连表查询是否自动select_related

(5)list_editable,定制可以编辑的列

(6)search_fields,定制可以模糊搜索的列

(7)date_hierarchy,定制对DateDateTime类型进行搜索的列

(8)inlines,详情页面,如果有其他表和当前表做FK,那么详情页面可以做动态增加和删除

(9)action,定制action中的操作

(10)定制HTML页面

(11)raw_id_fields,详情页面,针对FKM2M字段变成以input形式

(12)field,详情界面时显示的字段

(13)exclude,详情界面时,排除的字段

(14)readonlys_fields,详情界面时只读的字段

(15)fieldsets,详情页面时,使用fieldsets标签对数据进行分割显示

(16)详情页面时,M2M显示时,数据移动选择

(17)ording,定制数据的排序规则

(18)radio_fields,详情界面时,使用radio显示选项(FK默认使用select

(19)form=ModelForm,用于定制用户请求时候表单验证

(20)empty_value_display,定制列数据为空的时候显示的默认值