Dango 之 Xadmin
xadmin 是Django的第三方扩展后台管理工具,比使用Django的admin站点更强大也更方便。
官方文档
1. 安装与基础配置
通过以下命令安装最新版本(推荐加源提升下载速度)
pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2 -i https://pypi.tuna.tsinghua.edu.cn/simple
下载完成后,在配置文件中注册(“xadmin”,“crispy_froms”,“reversion”)应用:
INSTALLED_APPS = ['django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles','xadmin','crispy_forms','reversion','home',
]# 修改使用中文界面
LANGUAGE_CODE = 'zh-Hans'# 修改时区
TIME_ZONE = 'Asia/Shanghai'
xadmin有建立自己的数据库模型,需要进行数据库迁移。
python manage.py makemigrations
python manage.py migrate
在总路由中添加xadmin的路由信息
import xadmin
xadmin.autodiscover()# version模块自动注册需要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()urlpatterns = [path(r'xadmin/', xadmin.site.urls),
]
如果之前没有创建超级用户,需要创建;如果已有,可直接使用登录后台
python manage.py createsuperuser
2.使用
- xadmin不再使用 Django的admin.py,而是需要编写代码在adminx.py文件中。
- xadmin的站点管理类不用继承 admin.ModelAdmin, 而是直接继承object即可。
例如在子应用home下创建adminx.py文件(注意不能命名为 xadmin.py !!!)
站点全局配置
import xadmin
from xadmin import viewsclass BaseSetting(object):"""xadmin的基本配置"""enable_themes = True # 开启主题切换功能use_bootswatch = True # 引导控制菜单xadmin.site.register(views.BaseAdminView, BaseSetting)class GlobalSettings(object):"""xadmin的全局配置"""site_title = "甜甜资讯" # 设置站点标题site_footer = "真甜couple出品" # 设置站点的页脚menu_style = "accordion" # 设置菜单折叠xadmin.site.register(views.CommAdminView, GlobalSettings)
效果如下:
注册子应用下模型到xadmin中
在当前子应用下创建 adminx.py,添加如下代码
from .models import BannerInfo
class BannerInfoModelAdmin(object):list_display = ['title', 'orders', 'is_show'] # 设置模型显示的字段
xadmin.site.register(BannerInfo, BannerInfoModelAdmin)
更改子应用在后台管理中的名称
子应用/apps.py
class HomeConfig(AppConfig):name = 'home'verbose_name = '我的首页' # 子应用在后台站点的显示名称
子应用/init.py
default_app_config = "home.apps.HomeConfig" # home是子应用名称
3.其他功能使用
参考博客
定时刷新、数据详情
from .models import BannerInfo
class BannerInfoModelAdmin(object):list_display = ['title', 'orders', 'is_show'] # 设置模型显示的字段show_detail_fields = ['title'] # 设置显示数据详情refresh_times = [3, 5, 7 ] #设置定时刷新时间
xadmin.site.register(BannerInfo, BannerInfoModelAdmin)
书签
数据列表页面特定的数据过滤,排序等结果,添加的书签还可以在首页仪表盘中作为小组件添加。
在 Model OptionClass中设定如下属性:
- show_bookmarks
设置是否开启书签功能,默认为True - list_bookmarks
设置默认的书签. 用户可以在列表页面添加自己的书签, 你也可以实现设定好一些书签, 使用实例如下:
class UserInfoAdmin(object):list_display = ('user_name', 'user_email', 'user_mobile')show_detail_fields = ['user_name']refresh_times = (3, 5, 7)list_bookmarks = [{ 'title': "存在邮箱",“query”: {"user_email_contains": '@'},"order": ("-user_name",),"cols": ('user_name', 'user_email', 'user_mobile'),}]
效果如下:
图表
在数据列表页面,根据列表数据生成图表,可以指定多个数据列,生成多个图表。
在Model OptionClass 中设定data_charts属性,该属性为dict类型,key是图表的标示名称,value是图表的具体设置属性;
图标主要属性(key-value):
title : 图表的显示名称
x-field : 图表的 X 轴数据列, 一般是日期, 时间等
y-field : 图表的 Y 轴数据列, 该项是一个 list, 可以同时设定多个列, 这样多个列的数据会在同一个图表中显示
order : 排序信息, 如果不写则使用数据列表的排序
示例:
效果
数据导出
如果想要导出Excel数据,需要安装xlwt。
默认情况下,xadmin会提供Excel,CSV,XML,json四种格式的数据导出,可以通过设置OptionClass的list_export属性来指定使用哪些导出格式(四种格式分别用xls,csv,xml,json表示)或是将list_export设置为None来禁用数据导出功能。
过滤
在 Model OptionClass 中设置以下属性:
list_filter 属性:
该属性指定可以过滤的列的名字, 系统会自动生成搜索器
search_fields 属性:
属性指定可以通过搜索框搜索的数据列的名字, 搜索框搜索使用的是模糊查找的方式, 一般用来搜素名字等字符串字段
free_query_filter 属性:
默认为 True , 指定是否可以自由搜索. 如果开启自由搜索, 用户可以通过 url 参数来进行特定的搜索, 例如:
http://xxx.com/xadmin/auth/user/?name__contains=tony
设置只读字段
在使用xadmin的时候,ModelAdmin默认只有对于model的增删改查,但是总是有些字段是不希望用户来编辑的。而 readonly_fields 设置之后不管是admin还是其他用户都会变成只读,而我们通常只是想限制普通用户。 这时我们就可以通过重写 get_readonly_fields 方法来实现对特定用户的只读显示。
示例
class UserInfoAdmin():def get_readonly_fields(self):""" 重新定义此函数,限制普通用户所能修改的字段 """if self.user.is_superuser:self.readonly_fields = []return self.readonly_fieldsreadonly_fields = ('user_email',)
Dango 之 Xadmin相关推荐
- select三级联动 怎么删除前一个的_python测试开发django57.xadmin选项二级联动
前言 当我们选择项目分类的时候,一个项目下关联多个模块,同时有这两个选项框的时候,需要实现选中一个项目,模块里面自动删除出该项目下的模块,如下图这种 解决基本思路: 1.写个jqeury脚本监听cha ...
- xadmin后台页面定制和添加服务器监控组件
xadmin定制 项目需要添加服务器监控页面,碍于xadmin不是很好自定义页面,之前写过插件,太麻烦了,还是直接改源码 原理其实很简单,因为xadmin的处理流程和django类似,都是通过拦截UR ...
- Django xadmin 后台自定义action 动作
adminx.py from xadmin import views from .models import * # 自定义动作所需 from django import forms, VERSION ...
- 第三百九十二节,Django+Xadmin打造上线标准的在线教育平台—sql注入攻击,xss攻击,csrf攻击...
第三百九十二节,Django+Xadmin打造上线标准的在线教育平台-sql注入攻击,xss攻击,csrf攻击 sql注入攻击 也就是黑客通过表单提交的地方,在表单里输入了sql语句,就是通过SQL语 ...
- xadmin引入样式无效
当使用下面方式引入xadmin样式的时候发现并没有效果: file:adminx.py xadminxadmin views BaseSetting(): enable_themes = use_bo ...
- python测试开发django-35.xadmin注册表信息
前言 xadmin后台如果要对表的内容增删改查,跟之前的admin.py文件里面写注册表信息一样,需在admin.py同一级目录新建一个adminx.py的文件. 然后在adminx.py文件控制页面 ...
- Django+xadmin打造在线教育平台(十)
目录 在线教育平台(一) 在线教育平台(二) 在线教育平台(三) 在线教育平台(四) 在线教育平台(五) 在线教育平台(六) 在线教育平台(七) 在线教育平台( ...
- Luffy之Xadmin以及首页搭建(轮播图,导航)
1. 首页 1.1 轮播图 admin站点配置支持图片上传 pip install Pillow 默认情况下,Django会将上传的图片保存在本地服务器上,需要配置保存的路径.我们可以将上传的文件保存 ...
- 第三百七十七节,Django+Xadmin打造上线标准的在线教育平台—apps目录建立,以及数据表生成...
第三百七十七节,Django+Xadmin打造上线标准的在线教育平台-apps目录建立,以及数据表生成 apps目录建立 我们创建一个apps目录,将所有的app放到apps目录里去,这样方便管理,也 ...
最新文章
- OCM_第十二天课程:Section6 —》数据库性能调优_ 资源管理器/执行计划
- mysql 复制表数据,表结构的3种方法
- 打印JVM配置参数的命令
- PaddleOCR——CUDA9.0环境中训练运行错误【Cudnn error, CUDNN_STATUS_BAD_PARAM】解决方案
- A/B Matrix CodeForces - 1360G(思维构造)
- 前端学习(2683):重读vue电商网站4之登录页面总结使用 iconfont 给输入框添加图标
- Linux文件系统不是必须的,而是必要的!
- matlab中asix off_遗传算符MATLAB程序-入门必看
- JS判断页面是否刷新
- 经纬度计算距离公式(测地线距离)
- Chrome 管理搜索引擎
- 网络学习 2g 3g 4g 5g技术对比
- 微信公众帐号开发-自定义菜单的创建及菜单事件响应的实例
- 【成长经历】----陪女朋友拔智齿
- 彻底删除Android Studio
- git命令行修改用户名密码
- iOS开发中集成阿里云视频上传SDK总结
- SC92F8003读24C64程序
- Git安装教程(详细)
- 红旗linux8.0安装教程,RedHat Linux 红旗9.0安装图解
热门文章
- 问卷量表调研结果 - data 2022.2.27周五
- Paper之RegNet:《Designing Network Design Spaces》的翻译与解读—2020年3月30日来自Facebook AI研究院何恺明团队最新算法RegNet
- ORACLE 11GR2 配置GATEWAY FOR SERVER 问题
- 微信加密与登录验证分析
- 一图抵千言《ARouter简明扼要原理分析》
- 润物无声:java的字符串操作
- Android旅游自助项目之订票系统订票功能实现
- 信贷系统搭建——实现登录界面与验证
- 东京奥组委公布奥运志愿者和城市志愿者昵称
- Linux利用脏牛漏洞提权