深度定制djangoadmin界⾯
定制django admin界⾯
1.修改admin界⾯中的名字
1.1 修改模型名字
在models.py的模型类中中添加⼀个Meta内部类,设置 verbose_name和verbose_name_plural属性。
class Courier(models.Model):
def__str__(self):
urier_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中注册绑定模型和模型管理器
ister(Mymodel, MymodelAdmin)
或者使⽤装饰器
@ister(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 >{}</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.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',
'ib.admin',
....
]
隐藏simpleui主页信息
隐藏前
在setting.py中添加
django admin 自定义页面SIMPLEUI_HOME_INFO =False
即可。
隐藏后:
修改默认图标
在settings.py中添加如下配置:
字段说明
name模块名字,请注意不是models.py中model的命名,⽽是菜单栏上显⽰的⽂本,因为model是可以重复的,会导致⽆法区分
icon图标,可以参考的图标,只需要将完整的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'
可选值见官⽹
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论