【Django】 Admin 管理工具
Admin -Django数据库可视化管理工具
参考:http://www.runoob.com/django/django-admin-manage-tool.html
概念:Django Admin 可以对Django后端数据库进行可视化管理。
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', 'app01.apps.App01Config', ]
一、激活管理工具
通常我们在生成项目时会在 urls.py 中自动设置好, url('admin/', admin.site.urls),
配置项如下所示:
from django.contrib import admin from django.conf.urls import url from app01 import views urlpatterns = [ url('admin/', admin.site.urls), url('index/', views.index), url('addBook/', views.addBook), url('delBook/', views.delBook), url('modifyBook/', views.modifyBook), url('queryBook/', views.queryBook), ]
二、使用管理工具
通过cmd命令 python manage.py createsuperuser 来创建超级用户,如下所示:
启动开发服务器,然后在浏览器中访问 http://127.0.0.1:8000/admin/,得到如下界面:
之后输入用户名密码登录,界面如下:
为了让 admin 界面管理某个数据模型,我们需要先注册该数据模型到 admin。
from django.contrib import admin from app01.models import Book,Publish,Author # admin.site.register(Book) # admin.site.register(Publish) # admin.site.register(Author) admin.site.register([Book,Publish,Author]) #可以写成一行
刷新后即可看到 Book Publish Author数据表:
注意:如果你觉得英文界面不好用,可以在setting.py 文件中修改以下选项
LANGUAGE_CODE = 'en-us' #默认英文 #LANGUAGE_CODE = 'zh-hans' #修改为中文
三、自定义表单
我们可以自定义管理页面,来取代默认的页面。比如Books页面内书籍页面内。我们想只显示 name 和 price 部分:
from django.contrib import admin from app01.models import Book,Publish,Author class BookAdmin(admin.ModelAdmin): fields = ("name","price") admin.site.register(Book,BookAdmin) #用BookAdmin 替换掉Book 原来的样式 admin.site.register([Publish,Author]) #可以写成一行
我们还可以将输入栏分块,每个栏也可以定义自己的格式:
from django.contrib import admin from app01.models import Book,Publish,Author class BookAdmin(admin.ModelAdmin): fieldsets = ( ["Main",{ 'fields' : ("name", "price"), }], ['Advance',{ 'classes':('collapse',), 'fields': ('pub_date',), }] ) admin.site.register(Book,BookAdmin) #用BookAdmin 替换掉Book 原来的样式 admin.site.register([Publish,Author]) #可以写成一行
Advance 部分旁边有一个 Show 按钮,用于展开,展开后可点击 Hide 将其隐藏,如下图所示:
四、内联(Inline)显示
上面的 Contact 是 Tag 的外部键,所以有外部参考的关系。
而在默认的页面显示中,将两者分离开来,无法体现出两者的从属关系。我们可以使用内联显示,让 Tag 附加在 Contact 的编辑页面上显示。
五、常用功能总结:
0、指定要显示的字段: list_display
1、分页功能:list_per_page = 5
2、可编辑功能:list_editable = ('name','price') #name price 可直接编辑
3、搜索功能:search_fields
4、列表过滤器功能:list_filter
5、排序:ordering
6、水平栏 搜索/选择:filter_horizontal = ('author',)
注意:list_display 不能加多对多
from django.contrib import admin from app01.models import Book,Publish,Author class BookAdmin(admin.ModelAdmin): # 展示的列 list_display = ['id','name','price','pub_date'] # 可编辑 list_editable = ('name','price') #name price 可直接编辑 # 水平过滤 filter_horizontal = ('author',) #添加分页 list_per_page = 5 # 添加搜索 search_fields = ("id","name","price","publish__name") #按照 id name price publish__name 依次搜索 #右侧列表过滤 list_filter = ("pub_date","publish") #排序 ordering = ("price","pub_date","id") #按照price 升序排列,price 相同再比较pub_date # ordering = ("-price", "id") # 按照price 降序排列,price相同再按照id排序 #表字段显示也隐藏 fieldsets = [ (None, {'fields': ['name']}), ('more', {'fields': ['price', "publish"], 'classes': ['collapse']}), ] admin.site.register(Book,BookAdmin) #用BookAdmin 替换掉Book 原来的样式 admin.site.register(Publish) admin.site.register(Author)
搜索效果: