simpleui
一、simpleui
之前公司里,做项目前后端结合,要使用权限,要快速搭建后台管理,使用djagno的admin直接搭建,django的admin界面不好
因此有了第三方美化
#第三方的美化:
-xadmin:作者弃坑了(通常是bug太多了),基于bootstrap+jq编写的
-simpleui: 基于vue编写的,界面更好看
现在阶段,一般前后端分离比较多:django+vue
因此需要一块带权限的前后端分离的快速开发框架,我们目前有两个选择
-使用django-vue-admin(李强学长写的)
-自己写
ps:如果刷新页面没有变化,就重启项目
1.1 使用步骤
- 1、安装
pip install django-simpleui
- 2、在app中注册(必须注册在最上面)
INSTALLED_APPS = [
'simpleui',
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app01.apps.App01Config',
'rest_framework',
]
这时候就可以去admin后台界面看效果了
登陆界面:


目前我们没有添加别的表,为了方便后面的测试,我们需要导入之前图书管理系统用到的表
models.py
from django.db import models
# Create your models here.
class UserInfo(models.Model):
username = models.CharField(max_length=32)
password = models.CharField(max_length=32)
class Book(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=32,verbose_name='图书名字',help_text='这里填图书名')
price = models.DecimalField(max_digits=5, decimal_places=2, verbose_name='价格')
publish_date = models.DateField(verbose_name='出版日期')
publish = models.ForeignKey(to='Publish', to_field='nid', on_delete=models.CASCADE, verbose_name='出版社')
authors = models.ManyToManyField(to='Author', verbose_name='作者')
def __str__(self):
return self.name
class Meta:
verbose_name = '书籍'
verbose_name_plural = verbose_name
class Author(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=32, verbose_name='作者名')
age = models.IntegerField(verbose_name='年龄')
author_detail = models.OneToOneField(to='AuthorDetail', to_field='nid', unique=True, on_delete=models.CASCADE, verbose_name='作者信息的一对一外键')
def __str__(self):
return self.name
class Meta:
verbose_name = '作者'
verbose_name_plural = verbose_name
class AuthorDetail(models.Model):
nid = models.AutoField(primary_key=True)
telephone = models.BigIntegerField(verbose_name='手机号')
birthday = models.DateField(verbose_name='生日')
addr = models.CharField(max_length=64, verbose_name='住址')
class Meta:
verbose_name = '作者详情'
verbose_name_plural = verbose_name
class Publish(models.Model):
nid = models.AutoField(primary_key=True)
name = models.CharField(max_length=32, verbose_name='出版社名称')
city = models.CharField(max_length=32, verbose_name='城市')
email = models.EmailField(verbose_name='邮箱')
def __str__(self):
return self.name
class Meta:
verbose_name = '出版社'
verbose_name_plural = verbose_name
ps:
当我们在admin中进行注册后我们会发现admin后台管理界面上显示的这四张表的内容是定义时候的类名,这时候我们就需要在模型层中添加Meta类来定义他的名称。
这里我们用来两行代码来定义,之所以这么些是因为在只使用verbose_name来定义的时候,名称后面会多出一个s,这不太好看,因此需要使用第二种方式verbose_name_plural来命名,这种方式就不会在末尾出现s
数据库迁移后我们回顾一下编写bbs项目时的操作步骤,如果想让表在admin界面显示出来,时需要去admin.py进行注册的,这里也是一样
admin.py
from django.contrib import admin
from .models import Book, Publish, Author, AuthorDetail
# Register your models here.
admin.site.register(Book)
admin.site.register(Publish)
admin.site.register(Author)
admin.site.register(AuthorDetail)
添加完注册信息后,我们刷新网页就能看到这些表已经出现在admin后台管理界面上了,但是这时候我们可以看到虽然表中的字段的名称已经被我们更改掉了,但是我们使用的app的名称也看着不美观。
这时候我们就要去应用的apps.py文件中添加一条属性
apps.py
from django.apps import AppConfig
class App01Config(AppConfig):
default_auto_field = 'django.db.models.BigAutoField'
name = 'app01'
verbose_name = '图书管理系统'
这个时候我们就会看到所有的地方都已经被我们替换成了中文

这时候我们点击左侧的书籍,开始添加数据
点击蓝色的增加按钮就会进入添加数据的界面


1.2 功能介绍
更多功能请去浏览官方文档:https://simpleui.72wo.com/docs/simpleui/quick.html#目录
部分功能讲解
- 自定义菜单
当我们需要使用simpleui的自定义菜单栏时,需要修改admin中注册的方式
这里我们以书籍表(book)为例子,先把原来的注册信息注释掉,然后再写上新的注册内容
admin.py
# admin.site.register(Book)
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
list_display = ('nid', 'name', 'price', 'publish_date', 'publish')
'模型层中有哪些字段,这里我们就要写上哪些字段名,多对多的字段不用写(他本质上是一张表)'
用新的方式注册了图书表后界面就会发生更改(更好看)

菜单栏中添加按钮
在上面的基础上,我们在admin.py文件中可以配置自定义按钮
admin.py
from django.contrib import admin
from .models import Book, Publish, Author, AuthorDetail
# Register your models here.
# admin.site.register(Book)
admin.site.register(Publish)
admin.site.register(Author)
admin.site.register(AuthorDetail)
@admin.register(Book)
class BookAdmin(admin.ModelAdmin):
list_display = ('nid', 'name', 'price', 'publish_date', 'publish')
# 增加自定义按钮
actions = ['custom_button']
def custom_button(self, request, queryset):
print(queryset)
'这是定义按钮作用的函数可以自行编写功能,这里只是简单的打印'
custom_button.confirm = '你是否执意要点击这个按钮?'
'这是点击了按钮之后出现的弹窗中的提示信息'
# 显示的文本,与django admin一致
custom_button.short_description = '测试按钮'
'这是按钮的名称'
# icon,参考element-ui icon与https://fontawesome.com
# custom_button.icon = 'fas fa-audio-description'
'这里是定义按钮前面的图标的'
# # 指定element-ui的按钮类型,参考https://element.eleme.cn/#/zh-CN/component/button
custom_button.type = 'danger'
'这是更改按钮类型的配置'
# # 给按钮追加自定义的颜色
# custom_button.style = 'color:black;'
效果展示

- 调整左侧导航栏(自定义菜单)
这个功能需要我们在项目的配置文件中添加配置
#######simpleui---->左侧菜单栏
import time
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/publish/'
},
{
'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'
}]
}
]
}
1、menu_display对应menus的name属性
2、这里的menus可以进行三次嵌套(可以写到三级菜单),但是在使用的时候需要分清楚指向的内容,如果是给项目的app定义菜单栏,就需要在menus中添加app属性
3、然后menus中我们需要填入url,这个url一开始我们可能不知道,但是我们访问一个错误的内部网址的然后他的网页上就会显示出目前有的内部的url,或是我们手动设置对应的路由。同时我们也可以填写一些外网的url进行访问。icon属性是设置图标
效果如下:

- 其他功能
这些功能都是在配置文件(settings.py)中添加配置信息来实现功能的
登录页面动态粒子效果
SIMPLEUI_LOGIN_PARTICLES = False #登录页面动态粒子效果
默认图标替换
SIMPLEUI_LOGO = 'https://avatars2.githubusercontent.com/u/13655483?s=60&v=4'
登陆成功后admin界面首页右上方的github等信息窗口开关(服务器信息)
SIMPLEUI_HOME_INFO = False #首页右侧github提示


快捷操作
SIMPLEUI_HOME_QUICK = False #快捷操作

最近动作
SIMPLEUI_HOME_ACTION = False # 动作

ps1:之所以会有这些取消展示内容的设置是因为当我们想要自定义的时候,这些东西是用不到的
ps2:在文档中介绍了一个离线模式,这个不要开,一般填False
1.3 展示大屏
我们在很多大型场馆,经常会看到一块大屏幕,上面动态实时展示着一些内容,看上去十分炫酷,这些其实也是很简单的。
我们直接去github或是gitee上搜展示大屏,找一个自己喜欢的下载下来或是直接用地址获取内容
# 监控大屏展示
-https://search.gitee.com/?skin=rec&type=repository&q=%E5%B1%95%E7%A4%BA%E5%A4%A7%E5%B1%8F
-就是前后端混合项目,js,css,图片对应好,就可以使用了
下载后的内容打开是这样的

我们把对应的js,css,图片下载下来存到我们自己项目的静态文件目录中(static),然后把他的html文件拷贝到templates目录内,再把对应的路径修改一下就可以使用了,需要用到什么变量的时候我们直接用模板语法写上去即可
simpleui的更多相关文章
- 自定义user表签发token、自定义认证类、simpleui模块使用
今日内容概要 自定义User表,签发token 自定义认证类 simpleui的使用 多方式登陆接口(后面也写 内容详细 1.自定义User表,签发token # 如果项目中的User表使用auth的 ...
- django 实战3 simpleui
pip3 install django-import-export pip3 install django-simpleui pip3 install mysqlclient python3 mana ...
- 2013年优秀jQuery插件
今天为大家推荐的是2013年的第一期,在这期里面十个jQuery插件涵盖了响应式的网格布局插件.图片放大插件.表单元素中自定义select插件,google 地图插件.文件拖放上传插件.tooltip ...
- javascript开源大全
javascript开源大全 Ajax框架-jQuery 可视化HTML编辑器-CKEditor 国产jQuery-UI框架-(jUI)-DWZ 网页开发FireFox插件-Firebug 服务器端的 ...
- 实用的Python库
一.Django 1.自动实现图片压缩: pip install easy-thumbnails / https://pypi.org/project/easy-thumbnails/2.实现定时任务 ...
- 关于xadmin的网址收集
https://blog.csdn.net/yambo1992/article/details/80918250 https://www.colabug.com/4728510.html django ...
- django admin站点美化
使用django-simpleui 安装 pip install django-simpleui 源码地址 https://github.com/newpanjing/simpleui django ...
- EasyTest-接口自动化测试平台部署上线问题记录
平台url: http://easytest.xyz 花巨资搞了个阿里云服务器,哈哈,有想体验指导的大佬私聊我~~~ 部署环境 云服务器:Ubuntu Server 16.04.1 LTS 64位 ...
- 纯django开发博客系统
企业级教程:纯django开发博客系统 1.视频教程 https://www.duanshuilu.com/ 2.教程文档 https://www.duanshuilu.com/ 0.课程简介1.简价 ...
- Django快速开发实践:Drf框架和xadmin配置指北
步骤 既然是快速开发,那废话不多说,直接说步骤: 安装Djagno 安装Django Rest Framework 定义models 定义Rest framework的serializers 定义Re ...
随机推荐
- USB gadget驱动框架(五)
本节主要分析虚拟串口的tty设备的注册.创建/dev/ttyGSx设备节点.tty相关接口的实现. tty的申请与注册 源码:drivers/usb/gadget/function/u_serial. ...
- ARM64 SMP多核启动(下)- PSCI
4.支持psci情况 上面说了pin-table的多核启动方式,看似很繁琐,实际上并不复杂,无外乎主处理器唤醒从处理器到指定地址上去执行指令,说他简单是相对于功能来说的,因为他只是实现了从处理器的启动 ...
- 宝塔部署java后端项目
1. 安装插件 宝塔面板找到软件商店然后搜索 Java java项目管理安装 安装后点击设置准备安装 tomcat 2. 添加项目
- Linux环境下的mysql安装
MySQL8.0.26-Linux版安装 1.准备一台Linux服务器 云服务器或者虚拟机都可以; Linux的版本为 Centos7; 2.下载Linux版MySQL安装包 https://down ...
- 云原生动态周刊:你订阅 GitHub README 播客了吗?
云原生一周动态要闻: Apache Kafka 3.0.0 发布 Deis Labs 推出 WebAssembly PaaS 平台 Hippo Mirantis Flow 将数据中心重塑为云原生系统 ...
- KubeKey 2.1.0 发布:增强 K8s 离线交付体验
2022 年 5 月 6 日,KubeKey 2.1.0 正式发布,这是 KubeKey 的第 8 个正式版本.该版本增强了离线部署能力和交付体验,同时支持"一云多芯",即同一个 ...
- Machine Learning Week_3 Classification Model
目录 1 Classification and Representation 1.1 Classification unfamiliar words 1.2 Hypothesis Representa ...
- HTML5+CSS3+JavaScript网页实战
1. HTML5基础 HTML5,作为构建和呈现网页内容的标准标记语言,带来了许多革命性的变化.它不仅提供了更加语义化的标签,使得网页内容更具可读性和可访问性,还增加了对多媒体的原生支持,无需依赖第三 ...
- 如何用 Spring AI + Ollama 构建生成式 AI 应用
为了构建生成式AI应用,需要完成两个部分: AI大模型服务:有两种方式实现,可以使用大厂的API,也可以自己部署,本文将采用ollama来构建 应用构建:调用AI大模型的能力实现业务逻辑,本文将采用S ...
- 模算术 modular arithmetic
https://en.wikipedia.org/wiki/Modular_arithmetic#Integers_modulo_n 模算术: 整数达到特定值时会' 折返 ' 回来-- 模数 modu ...