django admin

参考资料:https://www.cnblogs.com/wumingxiaoyao/p/6928297.html

依赖

默认在创建项目后就能使用。

1,确保django.contrib.admin在INSTALL_APP中,同时还确保django.contrib.contenttypes, django.contrib.messages, django.contrib.sessions在INSTALL_APP中。

2,确保django.contrib.auth.context_processors.auth和django.contrib.messages.context_processors.messages在templates的options中。

3,确保中间件中有django.contrib.auth.middleware.AuthenticationMiddleware和django.contrib.messages.middleware.MessageMiddleware。

4,确保admin在你的URLconf中。

AdminConfig与SimpleAdminConfig

区别:AdminConfig比SimpleAdminConfig多使用一个autodiscover方法。SimpleAdminConfig不会将INSTALL_APP中的项目导入到后台,在自定义管理后台时,使用SimpleAdminConfig代替AdminConfig。

admin全局配置

全局配置更改如下,详情请见官网:https://docs.djangoproject.com/en/3.0/ref/contrib/admin/

admin.site.register("Blog")                      # 注册字段,在管理界面可编辑

admin.site.site_header = 'catfish的个人博客'           # 设置顶部标题

admin.site.site_title = '欢迎光临,我的博客'     # 设置标签页标题

admin.site.site_url = '/'                        # 设置后台网站顶部打开url的相对链接,默认为'/'

admin.site.index_title = "admin"                  # 设置导航栏顶部下面的标题,默认为“站点管理”

admin.site.empty_value_display = "这里为空"      # 设置默认的空值字符串,默认为'-'

Copy

admin的属性字段配置

https://docs.djangoproject.com/en/3.0/ref/contrib/admin/

基本常用配置

list_display 表式后台界面应该展示哪些字段。actions表示管理员动作。fields表示哪些表单在编辑界面展示出来。exclude表示哪些表单在编辑界面不展示出来。list_display_link表示哪些字段可以点击进入编辑界面,默认是从左到右的第一个字段。list_filter表示按某个字段类筛选。search_field表示被搜索的相关字段。list_per_page表示每一页可以看到的对象数。date_hierarchy 表示详细时间分层筛选。readonly_fields设置只读字段。list_editable在列表时可编辑的列,不过不能是可点击进入的字段或者是models里面的自定义函数。filter_horizontal 适用于较多的ManyToMany字段。

from django.contrib import admin
from myapp.models import Blog

@admin.register(Blog)
class BlogAdmin(admin.ModelAdmin):
    actions = None
    actions_on_top = True
    actions_on_bottom = False
    actions_selection_counter = True             # 默认计数
    date_hierarchy = 'pub_date'      # 日期分排
    empty_value_display = "-empty-"
    exclude = ("title",)             # field = ("content",)
    fieldsets = (
        (None, {
            'fields': ('url', 'title', 'content', 'sites')
        }),
        ('Advanced options', {
            'classes': ('collapse',),  # collapse代表折叠,wide带表额外的水平空间
            'fields': ('registration_required', 'template_name'),
            'description': '额外注释和描述',
        }),
    )
    filter_horizontal = ('ManyToMany',)
    filter_horizontal = ('ManyToMany',)
    form = Forms    # 自定义表单
    formfield_overrides = {
        models.TextField: {'widget': RichTextEditorWidget},
    }
    list_display = ('title', 'content')
    list_display_links = ("title",)
    list_editable = ("content",)
    list_filter = ('search',)
    list_max_show_all = 200            # 显示全部
    list_per_page = 100         # 分页
    list_select_related = False
    ordering = ("-date",)
    prepopulated_fields = {"slug": ("title",)}
    view_on_site = True                          # get_absolute_url返回的链接

Copy

后台字体改变样式

# models.py
from django.db import models
from django.utils.html import format_html

class Blog(models.Model):
    ... 
    def color_name(self):
        return format_html('<span style="color: red;">{} {}</span>', self.title, self.content)

Copy

然后到admin.py中注册即可显示出对应样式。

fieldset参数

fieldset参数可以将表单分块展示,下列是fieldset参数的格式:

fieldsets = (
    (标题, {内容}),
    (标题,{内容}),
)

Copy

举例如下:

fieldsets = (
    ('基础配置', {'field': ('title','content'), 'class':('collapse',), 'description':'这里是帮助文档'}),
    (None , {'field':('slug', 'date'), 'class':('width',), 'description': '这里是描述'}),
)

Copy

内容中有三个键可以进行选择:field是必选的,它规定哪些字段相关表单在该标题处显示。class表示该区块中添加的class属性,目前生效的有两个:collapse和wide。collapse表示该内容区域可折叠,wide表示额外的水平空间。description表示该标题下相关的帮助文档信息。

管理员动作

1,编写函数名,举例如下:

# admin.py
def make_published(modeladmin, request, queryset):
    queryset.update(status='p')

Copy

2,在actions中注册函数名即可。

django后台添加文档

1,在INSTALL_APP中添加 django.contrib.admindocs

2,在urls.py中添加path('admin/doc/', include('django.contrib.admindocs.urls')),并放到admin之前。

3,pip安装docutils 模块。

4,将django.contrib.admindocs.middleware.XViewMiddleware放入中间件中。

5,完毕,接下来在管理后台的右上角就可以看到了!

django admin方法

short_description 注释。empty_value_display 为空值时显示的值。 boolean=True启用图片形式。admin_order_field 排序规则。

posted @ 2020-09-27 14:41  小默同学  阅读(98)  评论(0编辑  收藏  举报