深度定制django admin界面

定制django admin界面

1.修改admin界面中的名字

1.1 修改模型名字

models.py的模型类中中添加一个Meta内部类,设置 verbose_nameverbose_name_plural属性。

class Courier(models.Model):
    def __str__(self):
        return self.courier_id

    class Meta:
        verbose_name = '配送人员'
        verbose_name_plural = '配送人员'  # 设置复数的显示

1.2 修改admin站点标题和名字

在任何一个应用的admin.py中添加

admin.site.site_header = '管理'
admin.site.site_title = '校园管理'
admin.site.index_title = '校园管理'

即可定义管理站点左上角的名字

2.更换app在admin中名字

修改apps.py

from django.apps import AppConfig

VERBOSE_APP_NAME = '学习资源'


class LearningSourceConfig(AppConfig):
    name = 'learningsource'
    verbose_name = VERBOSE_APP_NAME

3.中文设置

settings.py中设置

LANGUAGE_CODE = 'zh-hans'
TIME_ZONE = 'Asia/Shanghai'

4.定制列表页

4.1 注册模型管理器

在应用的admin.py中添加相应模型的管理类,例如有一个模型是Mymodel,增加一个管理器

class MymodelAdmin(admin.ModelAdmin):
    ......

admin.py中注册并将模型和模型管理器绑定。

#在admin中注册绑定模型和模型管理器
admin.site.register(Mymodel, MymodelAdmin)

或者使用装饰器

@admin.register(Mymodel)
class MymodelAdmin(admin.ModelAdmin):
    ......

4.2 定制模型列表

class MymodelAdmin(admin.ModelAdmin):
    #列表中显示的字段(表头)
    list_display = ('Field1', 'Field2', 'Field3')
    #设置排序字段,负号表示降序排序
    ordering = ('-created_time',)
    #设置点击哪些字段可以点击进入编辑界面,默认为id字段
    list_display_links = ('id', 'title')
    #定制操作选项
    #操作选项位置
    #列表顶部,设置为False不在顶部显示,默认为True。
	actions_on_top=True

	#列表底部,设置为False不在底部显示,默认为False。
	actions_on_bottom=False
    #搜索框,是一个列表,列表中是作为搜索依据的字段
    search_fields=['Field1', 'Field2']
    # 设置详细页面中的只读字段,此时不能在详细页面进行更改。
    readonly_fields = ('goods_order_id', 'buyer_id', 'goods_id', 'pub_date')
    # 在详细页面中以单选按钮显示
    radio_fields = {"goods_order_status": admin.HORIZONTAL}#或者admin.VERTICAL
     # 设置详情页面的字段顺序以及显示的字段
    fields = ('goods_order_id', 'price', 'count')
    #设置在详情页同一行显示的字段
    #'goods_order_id', 'price'将在同一行显示
     fields = (('goods_order_id', 'price'), 'count')
    # 分页显示
    list_per_page = 20
    # 分页控件,使用django默认控件
    paginator = Paginator

4.3 定制字段颜色

models.py中添加

class Mymodel(models.Model):
        def colored_status(self):
        color_code = ""
        if self.status == 'completed':
            color_code = 'green'
            colored_status = "已完成"
        if self.status == 'canceled':
            color_code = 'red'
            colored_status = "已取消"
        if self.status == 'processing':
            color_code = "orange"
            colored_status = "处理中"
        return format_html(
            '{}',
            color_code,
            colored_status,
        )

    # 让有颜色的字段在排序时遵循原来的字段
    colored_status.admin_order_field = 'status'
    # 给有颜色的字段取一个别名
    colored_status.short_description = '订单状态'

在相应的admin.py的管理器的list_display中添加:

 list_display = (....,'colored_status',...)

4.4 数据表格过长内容省略显示

有时数据表中的文本过长,造成界面很不美观,需要省略显示,方法:在models.py中添加

    def shortcut_intro(self):
        if len(str(self.intro)) > 10:
            return self.intro[:10] + "..."
        else:
            return self.intro
    # 设置截断的intro在排序时遵循原来的字段
    shortcut_intro.admin_order_field = 'intro'
    # 给截断的intro设置别名
    shortcut_intro.short_description = "简介"

这样在简介文本大于10的时候就会省略显示

在这里插入图片描述

注意:使用这种方式原来字段设置的别名将无效。

4.5 禁用某个操作

admin.py中添加

class Mymodel(models.Model):
     # 禁用添加操作
    def has_add_permission(self, request):
        return False
     # 禁用更改操作
    def has_change_permission(self, request):
        return False
     # 禁用删除操作
    def has_delete_permission(self, request):
        return False

4.6 填充当前用户

models.py中字段

class Mymodel(models.Model):
     creator_name = models.CharField("创建者", max_length=50)

admin.py中添加

 # 保存创建者名称
    def save_model(self, request, obj, form, change):
        if not change:
            obj.creator_name = request.user.get_username()
        obj.save()#必须加,否则不会保存

3.使用bootstrap-admin美化界面

首先安装第三方安装包:

pip install bootstrap-admin

在项目的settings.pyINSTALLED_APPS中添加:

 'bootstrap_admin',

保存后刷新admin界面即可。接下来修改logo和站点名称。首先修改主界面logo图标,在python安装目录下按照下述目录进行寻找:Lib\site-packages\bootstrap_admin\static\bootstrap_admin\img,该img文件夹中的logo-140x60.png即为后台管理系统主界面logo,将其替换即可。效果如下:

深度定制django admin界面_第1张图片

4.使用django-simpleui美化界面

版本

simpleui3.1

安装

安装django-simpleui:

pip install django-simpleui

在项目的settings.pyINSTALLED_APPS中添加:

INSTALLED_APPS = [
 'simpleui',
 'django.contrib.admin',
 ....
]

隐藏simpleui主页信息

隐藏前

深度定制django admin界面_第2张图片

setting.py中添加

SIMPLEUI_HOME_INFO = False

即可。

隐藏后:

深度定制django admin界面_第3张图片

修改默认图标

settings.py中添加如下配置:

字段 说明
name 模块名字,请注意不是models.pymodel的命名,而是菜单栏上显示的文本,因为model是可以重复的,会导致无法区分
icon 图标,可以参考fontawesome的图标,只需要将完整的class名填入即可。

示例:

SIMPLEUI_ICON = {
	'商品订单': 'fab fa-apple',
}

修改logo

settings.py中添加

SIMPLEUI_LOGO = '图片URL'

如果需要使用本地图片,需要在Lib/site-packages/simpleui/static/admin/simpleui-x/img中把原来的logo.png替换掉(图片名称不要改变)。

设置默认主题

settings.py中添加:

SIMPLEUI_DEFAULT_THEME = 'admin.lte.css'

可选值见官网

https://gitee.com/tompeppa/simpleui/blob/master/QUICK.md#%E9%BB%98%E8%AE%A4%E4%B8%BB%E9%A2%98

你可能感兴趣的:(django)