• Django admin管理工具


    一、admin app

    Django 提供了基于 web 的管理工具。

    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',
    ]

    django.contrib是一套庞大的功能集,它是Django基本代码的组成部分。

    二、激活管理工具

    通常我们在生成项目时会在 urls.py 中自动设置好

    from django.conf.urls import url
    from django.contrib import admin
    
    urlpatterns = [
        url(r'^admin/', admin.site.urls),
    ]

    三、使用admin管理工具

    首先先启动我们的Django项目,然后在浏览器中访问 http://127.0.0.1:8000/admin/,就能看到登陆界面。(具体网址和端口根据自己环境输入)

    使用 python manage.py createsuperuser 来创建管理员账号,来登录admin管理后台。

    想要在admin 界面管理某个数据模型(model),需要先将该数据模型(model)注册到 admin。

    四、admin的定制

    只要按照下面的方式将某个模型类注册,即可在Admin中实现增删改查的功能:

    # admin.py
    
    from django.contrib import admin
    from 应用名 import models
    
    admin.site.register(models.Publisher)
    admin.site.register(models.Book)
    admin.site.register(models.Author)

    但是,这种方式比较简单,如果想要进行更多的定制操作,需要利用ModelAdmin进行操作,如:

    # 方式一
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
    admin.site.register(models.Book, BookAdmin)
    
    # 方式二
    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")

    ModelAdmin支持的定制功能

    ModelAdmin中提供了大量的可定制功能,如:

    1. list_display,列表时,定制显示的列。

    from django.utils.safestring import mark_safe
    
    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher", "delete")
    
        def delete(self, obj):
            return mark_safe("<a href='#'>删除</a>")

    2. list_display_links,列表时,定制列可以点击跳转。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
        list_display_links = ("price",)

    3. list_filter,列表时,定制右侧快速筛选。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
        list_filter = ("title", "price", "publisher")

    4. list_select_related,列表时,连表查询是否自动 select_related。

    5. list_editable,列表时,可以编辑的列 。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
        list_editable = ("price",)

    6. search_fields,列表时,模糊搜索的功能。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher")
        search_fields = ("title", "publisher")

    7. date_hierarchy,列表时,对Date和DateTime类型进行搜索。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher", "publishDate")
        date_hierarchy = "publishDate"

    8. inlines,详细页面,如果有其他表和当前表做FK,那么详细页面可以进行动态增加和删除。

    9. action,列表时,定制action中的操作。

    @admin.register(models.Book)
    class BookAdmin(admin.ModelAdmin):
        list_display = ("title", "price", "publisher", "publishDate")
    
        # 定制Action行为具体方法
        def func(self, request, queryset):
            print(self, request, queryset)
            queryset.update(price=100)
        
        func.short_description = "初始化价格"
        actions = [func,]
    
        # Action选项都是在页面上方显示
        actions_on_top = True
        # Action选项都是在页面下方显示
        actions_on_bottom = False
    
        # 是否显示选择个数
        actions_selection_counter = True

    分隔


    10. 定制HTML模板。

    add_form_template = None
    change_form_template = None
    change_list_template = None
    delete_confirmation_template = None
    delete_selected_confirmation_template = None
    object_history_template = None
  • 相关阅读:
    sql over(partition by) 开窗函数的使用
    利用curl函数处理GET数据获取微信公众号的access_token
    2018.4.12
    字段和属性
    C#实现回车键登录
    判断DataTable里面数据是否有重复数据
    一个强大的人民币大写转换的正则表达式
    C#将image中的显示的图片转换成二进制
    遍历Dev LayoutControl中的所有控件信息
    遍历窗体中所有控件的信息
  • 原文地址:https://www.cnblogs.com/believepd/p/9962585.html
Copyright © 2020-2023  润新知