深度定制django admin界面
定制django admin界面
1.修改admin界面中的名字
1.1 修改模型名字
在models.py的模型类中中添加一个Meta内部类,设置 verbose_name和verbose_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(
'<span style="color: {};">{}</span>',
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.py的INSTALLED_APPS中添加:
'bootstrap_admin',
保存后刷新admin界面即可。接下来修改logo和站点名称。首先修改主界面logo图标,在python安装目录下按照下述目录进行寻找:Lib\site-packages\bootstrap_admin\static\bootstrap_admin\img,该img文件夹中的logo-140x60.png即为后台管理系统主界面logo,将其替换即可。效果如下:
4.使用django-simpleui美化界面
版本
simpleui3.1
安装
安装django-simpleui:
pip install django-simpleui
在项目的settings.py的INSTALLED_APPS中添加:
INSTALLED_APPS = [
'simpleui',
'django.contrib.admin',
....
]
隐藏simpleui主页信息
隐藏前
在setting.py中添加
SIMPLEUI_HOME_INFO = False
即可。
隐藏后:
修改默认图标
在settings.py中添加如下配置:
字段 | 说明 |
---|---|
name | 模块名字,请注意不是models.py中model的命名,而是菜单栏上显示的文本,因为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
上一篇: jvm中的变量分类-类加载
推荐阅读
-
定制Django Admin首页
-
翻译www.djangobook.com之第十八章:自定义Django的admin界面
-
Django 2.0 admin后台管理界面修改和添加富文本编辑器
-
Django基于Models定制Admin后台实现过程解析
-
基于Django的Admin后台实现定制简单监控页
-
定制Django Admin首页
-
Django 采用bootstrap-admin的界面部署
-
深度定制django admin界面
-
Django 采用bootstrap-admin的界面部署
-
解决Django Admin管理界面样式表(CSS Style)丢失问题_html/css_WEB-ITnose