zoukankan      html  css  js  c++  java
  • 【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)



    搜索效果:


    Django模型类Meta元数据详解(class Meta: )

    https://blog.csdn.net/Moniicoo/article/details/81781572

  • 相关阅读:
    SSL JudgeOnline 1194——最佳乘车
    SSL JudgeOnline 1457——翻币问题
    SSL JudgeOnlie 2324——细胞问题
    SSL JudgeOnline 1456——骑士旅行
    SSL JudgeOnline 1455——电子老鼠闯迷宫
    SSL JudgeOnline 2253——新型计算器
    SSL JudgeOnline 1198——求逆序对数
    SSL JudgeOnline 1099——USACO 1.4 母亲的牛奶
    SSL JudgeOnline 1668——小车载人问题
    SSL JudgeOnline 1089——USACO 1.2 方块转换
  • 原文地址:https://www.cnblogs.com/XJT2018/p/11317619.html
Copyright © 2011-2022 走看看