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,定制对Date和DateTime类型进行搜索的列
(8)inlines,详情页面,如果有其他表和当前表做FK,那么详情页面可以做动态增加和删除
(9)action,定制action中的操作
(10)定制HTML页面
(11)raw_id_fields,详情页面,针对FK和M2M字段变成以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,定制列数据为空的时候显示的默认值