SimpleUI是什么
SimpleUI官网:https://simpleui.72wo.com/simpleui/
简而言之,就是一个很漂亮的开源的Django后台管理框架。
很多人对Django自带的管理后台admin是又爱又恨,优点是几行代码配置就可以撸出一个功能性强的管理后台,缺点就是不怎么美观,感觉拿不出手。在所有的Django后台美化插件中,SimpleUI处于第一阵营,非常符合国人的审美观。本文将手把手教你如何配置使用Simple UI, 包括自定义菜单和控制面板等高级使用技巧.
SimpleUI安装
第一步 pip安装并加入INSTALLED_APPS
pip install django-simpleui
修改settings.py
, 将simpleui
加入到INSTALLED_APPS
里去,放在第一行,也就是django自带admin的前面。
INSTALLED_APPS = [ 'simpleui', # 注意这里
'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', ]
第二步 测试是否安装成功
使用python manage.py runserver
命令启动本地测试服务器, 访问/admin/
, 如果你能看到如下页面说明安装成功。
注册用户登录查看
数据库迁移
python38 manage.py makemigrations python38 manage.py migrate
注册超级管理员
python manage.py createsuperuser
登陆验证
登录后你还将看到如下用户界面:
注意:如果你在生成环境中使用SimpleUI,还需要使用python manage.py collectstatic
命令收集静态文件,否则样式无法正常显示。
常用配置
设置语言
当你看到以上界面时,首先你想改动的一定是语言,去掉SimpleUI的默认logo,并把Django administration
改成比如某某管理后台的名字。
修改settings.py
, 添加如下代码:
# 更改默认语言为中文 LANGUAGE_CODE = 'zh-hans' # 更改时区为上海 TIME_ZONE = 'Asia/Shanghai'
USE_TZ = False
更换后台登陆logo
在setting.py中:
# 换成自己Logo链接 SIMPLEUI_LOGO = '/static/image/star.png'
更改管理后台名字
在应用目录下的admin.py文件, 添加如下代码。这个设置属于Django的设置,不属于SimpleUI的设置。
from django.contrib import admin admin.site.site_header = 'XXX后台管理' # 设置header admin.site.site_title = 'XXX管理后台' # 设置title admin.site.index_title = 'XXX管理后台'
屏蔽右侧广告
在setting.py中:
# 隐藏右侧SimpleUI广告链接和使用分析 SIMPLEUI_HOME_INFO = False SIMPLEUI_ANALYSIS = False
修改之后:
admin后台数据管理
数据准备
- models.py中创建表模型
from django.db import models # Create your models here. class Book(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(max_length=32) price = models.DecimalField(max_digits=5, decimal_places=2) publish_date = models.DateField() publish = models.ForeignKey(to='Publish',to_field='nid',on_delete=models.CASCADE) authors=models.ManyToManyField(to='Author') def __str__(self): return self.name class Author(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(max_length=32) age = models.IntegerField() author_detail = models.OneToOneField(to='AuthorDetail',to_field='nid',unique=True,on_delete=models.CASCADE) def __str__(self): return self.name class AuthorDetail(models.Model): nid = models.AutoField(primary_key=True) telephone = models.BigIntegerField() birthday = models.DateField() addr = models.CharField(max_length=64) def __str__(self): return self.addr class Publish(models.Model): nid = models.AutoField(primary_key=True) name = models.CharField(max_length=32) city = models.CharField(max_length=32) email = models.EmailField() def __str__(self): return self.name
再次执行数据库迁移。
- admin.py中进行注册
from django.contrib import admin from .models import Book,Publish,Author,AuthorDetail admin.site.register(Book) admin.site.register(Publish) admin.site.register(Author) admin.site.register(AuthorDetail)
登录后的效果如下所示:
现在你可以看到语言、logo和管理后台名字都已经改过来了。但是你会发现项目名和表名显示的依然是英文,我们需要将其设置成中文。我们接下来要解决这个问题。
自定义或第三方APP名和模型名修改成中文
通过verbose_name
可以将app名改为中文。
apps.py中修改项目名
from django.apps import AppConfig class App01Config(AppConfig): name = 'app01' verbose_name = '图书管理系统'
models.py中表模型中添加Meta元标签:
class Meta: verbose_name = '作者' verbose_name_plural = verbose_name
界面展示
在后台管理中添加数据,以作者表为例
保存之后查看,发现只显示作者名字,如何让其他字段也显示在页面上呢?
admin.py中注册类中通过list_play设置要展示的字段
from django.contrib import admin from .models import Book,Publish,Author,AuthorDetail admin.site.register(Book) admin.site.register(Publish) # admin.site.register(Author) # admin.site.register(AuthorDetail) # 不能重复注册 @admin.register(Author) class AuthorAdmin(admin.ModelAdmin): list_display = ['nid','name','age','author_detail'] @admin.register(AuthorDetail) class AuthorDetailAdmin(admin.ModelAdmin): list_display = ['nid', 'telephone', 'birthday', 'addr']
此时刷新后台,会发现,数据已加载。
实际Django开发中,我们还会用到第三方应用app和第三方app提供的模型,我们也可以通过打补丁的方式更改第三方app或模型以及模型字段的verbose_name
或者label
,将其修改成中文,如下所示:
from third_package.models import ModelA ModelA._meta.verbose_name = '' ModelA._meta.verbose_name_plural = '' ModelA._meta.get_field('first_name').verbose_name = '名字'
自定义按钮
后台管理中有默认的按键可以对数据进行增删改查,我们也可以自定义按钮
@admin.register(Author) class AuthorAdmin(admin.ModelAdmin): list_display = ['nid','name','age','author_detail'] actions = ['custom_button'] def custom_button(self, request, queryset): print(queryset) custom_button.confirm = '你是否执意要点击这个按钮?' custom_button.short_description = '测试按钮' custom_button.type = 'danger'
其他配置项
设置默认主题
SimpleUI默认主题(default)是深蓝色的,它支持的主题有Element-ui
, Admin Lte
和Layui
等多种风格。你可以通过右上角下拉菜单改变主题,也可以在settings.py
中设置默认主题,如下所示:
# 设置默认主题,指向主题css文件名。Admin Lte风格 SIMPLEUI_DEFAULT_THEME = 'admin.lte.css' # 设置默认主题,指向主题css文件名。Element-ui风格 SIMPLEUI_DEFAULT_THEME = 'element.css' # 设置默认主题,指向主题css文件名。layui风格 SIMPLEUI_DEFAULT_THEME = 'layui.css' # 设置默认主题,指向主题css文件名。紫色风格 SIMPLEUI_DEFAULT_THEME = 'purple.css'
自定义菜单
左侧可折叠菜单是Simple UI系统默认菜单,根据已注册的应用和模型自动生成,其中父级菜单是App名,子菜单一般是所属App的各个模型名。SimpleUI甚至会自动为你分配默认图标,比如本例的tasks的应用使用了font-awsome的fa fa-tasks
。在大多数情况下,Simple UI系统默认菜单不能满足需求,这时你就需要自定义菜单了,比如添加新的选项或给菜单选项分配新的图标。
修改settings.py
, 添加如下代码:
SIMPLEUI_CONFIG = { 'system_keep': False, 'menu_display': ['图书管理', '权限认证', '外部链接'], # 开启排序和过滤功能, 不填此字段为默认排序和全部显示, 空列表[] 为全部不显示. 'dynamic': True, # 设置是否开启动态菜单, 默认为False. 如果开启, 则会在每次用户登陆时动态展示菜单内容 'menus': [ { 'name': '图书管理', 'app': 'app01', 'icon': 'fas fa-code', 'models': [ { 'name': '图书', 'icon': 'fa fa-user', 'url': 'app01/book/' }, { 'name': '出版社', 'icon': 'fa fa-user', 'url': 'app01/publisssh/' }, { 'name': '作者', 'icon': 'fa fa-user', 'url': 'app01/author/' }, { 'name': '作者详情', 'icon': 'fa fa-user', 'url': 'app01/authordetail/' }, ] }, { 'app': 'auth', 'name': '权限认证', 'icon': 'fas fa-user-shield', 'models': [ { 'name': '用户', 'icon': 'fa fa-user', 'url': 'auth/user/' }, { 'name': '组', 'icon': 'fa fa-user', 'url': 'auth/group/' }, ] }, { 'name': '外部链接', 'icon': 'fa fa-file', 'models': [ { 'name': 'Baidu', 'icon': 'far fa-surprise', # 第三级菜单 , 'models': [ { 'name': '爱奇艺', 'url': 'https://www.iqiyi.com/dianshiju/' # 第四级就不支持了,element只支持了3级 }, { 'name': '百度问答', 'icon': 'far fa-surprise', 'url': 'https://zhidao.baidu.com/' } ] }, { 'name': '大屏展示', 'url': '/show/', 'icon': 'fab fa-github' }] } ] }
- menu_display对应menus name
- 如果是项目的app,就menus写app
- 菜单可以多级,一般咱们内部app,都是一级
- 可以增加除咱们app外的其它链接---》如果是外部链接,直接写地址,如果是内部链接,跟之前前后端混合项目一样的写法
自定义菜单效果如下所示。我们更改了SimpleUI默认分配的图标。你还可以随意增减菜单选项并对其进行排序:
我们可以自己编写前端页面,在menus进行进行配置
自定义首页
SimpleUI默认首页由快捷链接和最近动作组成,我们可以将其隐藏,并将其链接到其它url。
继续修改settings.py
, 添加如下代码:
# 隐藏首页的快捷操作和最近动作 SIMPLEUI_HOME_QUICK = False SIMPLEUI_HOME_ACTION = False # 修改左侧菜单首页设置 SIMPLEUI_HOME_PAGE = 'https://cnblogs.com' # 指向页面 SIMPLEUI_HOME_TITLE = '博客园欢迎你!' # 首页标题 SIMPLEUI_HOME_ICON = 'fa fa-code' # 首页图标 # 设置右上角Home图标跳转链接,会以另外一个窗口打开 SIMPLEUI_INDEX = 'https://cnblogs.com'
展示效果将如下所示:
更多操作参考教程:https://simpleui.72wo.com/docs/simpleui/quick.html
标签:name,fa,admin,py,models,后台,SimpleUI From: https://www.cnblogs.com/chen-ao666/p/17109946.html