首页 > 其他 > 详细

【Django】 Admin 管理工具

时间:2019-08-07 21:04:41      阅读:87      评论:0      收藏:0      [点我收藏+]

Admin -Django数据库可视化管理工具

概念: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)

 

技术分享图片

 


 

技术分享图片

技术分享图片

 


 

 

技术分享图片

搜索效果:

技术分享图片


 

技术分享图片

 

【Django】 Admin 管理工具

原文:https://www.cnblogs.com/XJT2018/p/11317619.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!