zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    U-Boot新手入门
    安装交叉编译工具
    Makefile 工程管理
    gcc基本用法
    poj 3264 Balanced Lineup
    hdoj 1166 敌兵布阵
    poj 1363 Rails
    poj 1028 Web Navigation
    zoj 3621 Factorial Problem in Base K
    poj1861最小生成树
  • 原文地址:https://www.cnblogs.com/believepd/p/9962585.html
Copyright © 2011-2022 走看看