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

  • 相关阅读:
    ASP.net AJAX Toolkit —— DynamicPopulateExtender
    查找存储过程修改时间
    Application_Start和Application_End事件执行时间
    制作导航菜单
    multiple backgrounds
    background-size
    background-clip
    background-origin
    文本阴影text-shadow
    嵌入字体@font-face
  • 原文地址:https://www.cnblogs.com/XJT2018/p/11317619.html
Copyright © 2011-2022 走看看