程序员必知:xadmin快速搭建后台管理系统

简介: 程序员必知:xadmin快速搭建后台管理系统

一.xadmin的特点:

1.基于Bootstrap3:Xadmin使用Bootstrap3.0框架精心打造。基于Bootstrap3,Xadmin天生就支持在多种屏幕上无缝浏览,并完全支持Bootstrap主题模板,让您的管理后台也动感、多样起来。

2.内置功能丰富:Xadmin作为一款全面的后台管理系统框架,不仅提供了基本的CRUD功能,还内置了丰富的插件功能。包括数据导出、书签、图表、数据添加向导及图片相册等多种扩展功能。

3.真心强大的插件系统:Xadmin的插件系统借鉴了其他领域成功框架的设计思想,让插件可以扩展系统的任何一个功能点。对于开发者,Xadmin的插件开发简单;对于使用者,Xadmin的插件安装方便。

4.后台实际就是对表的增删改查,从某种程度上来讲不依赖于业务逻辑,又可以在后台对每张表管理时加入自己的后台逻辑,这也是它优于很多后台管理系统的原因。

二.xadmin的安装:

1.直接通过pip安装:pip install xadmin(会有三个依赖包:django-formtools //代码效果参考:http://www.zidongmutanji.com/zsjx/357089.html

,django-crispy-forms ,httplib2 都会自动安装好)

2.通过githup上搜索xadmin,直接下载源码包,只需把下载文件中的xadmin文件夹拷贝到项目根目录配置便可以使用,当然得把pip安装得xadmin卸载后使用的才是导入的源码包--pip uninstall xadmin(推荐,当xadmin的新功能还没有发布到pypi上时,可以优先使用,当然,最主要的是我们可以查看源码,更加容易理解xadmin的功能,并在不断学习中进步)

三.xadmin的app配置及url配置:

1.app配置:xadmin是一个app,也应该在setting.py的INSTALLED_APPS中添加上,不只是xadmin,还得添加上依赖包crispy_forms。

INSTALLED_APPS = 【

'django.contrib.admin',

'django.contrib.auth',

'django.contrib.contenttypes',

'django.contrib.sessions',

'django.contrib.messages',

'django.contrib.staticfiles',

'xadmin',

'crispy_forms'

2.url配置:替换Django自带的admin,将url指向xadmin

import xadmin

urlpatterns = 【

url(r'^xadmin/', xadmin.site.urls),

3.此时访问xadmin的url(我使用的默认端口,为127.0.0.1:8000/xadmin),会提示Table ‘xxx.xadmin_usersettings' doesn't exist,是因为xadmin有一些默认的表,只需要同步即可,从新makemigrations(生成数据库脚本文件),migrate(生成更新表),便可以发现数据库多了几张以xadmin开头的表(图1),从新启动项目便可以访问了。

图1

4.访问成功后,进入用户表效果如图2(布局不像admin一每一列一个字段,而且密码被加密,并告诉加密算法,相比admin更加安全美化,布局可自己定制):

图2

四.xadmin的使用:

1.在每一个app下新建一个adminx.py文件(类似django自动生成的admin.py文件,xadmin会自动在每个app下搜索xadminx.py并注册)

2.xadmin的简单注册(以School表为例),效果如图3:

#导入xamin模块

import xadmin

#导入School表

from .models import School

#创建注册类

class SchoolAdmin(object):

pass

xadmin.site.register(School, SchoolAdmin)

图3

class School(models.Model):

'''

学校表

'''

name=models.CharField(max_length=50,verbose_name='学校名字')

address=models.CharField(max_length=100,verbose_name='学校地址')

add_time=models.DateTimeField(default=datetime.now,verbose_name='添加时间')

class Meta:

verbose_name='学校'

verbose_name_plural=verbose_name

def str(self):

return self.name

图4

注册在后台的标名为verbose_name(数据只有一条,即单数),否则为verbose_name_plural(数据大于一条,即为复数),若为指明verbose_name_plural,则复数形式默认在单数形式后面在s(学校s),进入详情页的标签则为models中的verbose_name。models中重载str()函数返回的值是在每张表详情列表页的展示的标签名,可以在显示列中指定,如图5,以及点进详情页的修改(删除)xxx的标签名,如图3(修改西南石油大学)。

3.list_display的使用:指定默认展示列(效果如图5),注:要想过滤某外键下的字段,只需xxxyy(xxx为该表字段名,yy为外键对应表字段),效果如图6

class SchoolAdmin(object):

#可以是列表【】,也可以是元组(),但使用元组只有一个字段是一定要加逗号

list_display=【'name','address'】

#每页显示多少个

list_per_page=20

class Sport_FavAdmin(object):

list_display = 【'student', 'sport', 'add_time'】

search_fields = 【'student', 'sport'】

#student,sport均为外键,username,sport_name分别为学生表,运动项目表下的字段

list_filter = 【'studentusername', 'sportsport_name', 'add_time'】

图5

图6

4.search_fields的使用:搜索功能(包含搜索,即字段包含搜索字段便可以搜索出,一般不做时间功能搜索),会多出一个搜索框,可以在里面搜索配置好了的字段,如图6

class SchoolAdmin(object):

# 可以是列表【】,也可以是元组(),但使用元组只有一个字段是一定要加逗号

list_display=【'name','address'】

#配置在哪些字段搜索

search_fields=【'name','address'】

图7

5.list_filter的使用:筛选功能(如对时间筛选),会多出一个过滤器,便可以进行过滤搜索了,使开发变得简单,如图7

class SchoolAdmin(object):

# 可以是列表【】,也可以是元组(),但使用元组只有一个字段是一定要加逗号

list_display=【'name','address'】

#配置在哪些字段搜索

search_fields=【'name','address'】

#配置过滤字段

list_filter=【'name','address','add_time'】

图8

6.xadmin全局配置,app名称修改,左侧样式布局:

主题配置:注册与表注册不同,需要将类和views.BaseAdminView绑定,且顺序与表相反,效果如图9

from xadmin import views

class BaseSetting(object):

'''

主题样式多样化

'''

enable_themes=True

use_bootswatch=True

xadmin.site.register(views.BaseAdminView,BaseSetting)

图9

标签配置,效果如图10:

from xadmin import views

class GlobalSetting(object):

#页头

site_title = '悦动乐后台管理系统'

#页脚

site_footer = '悦动乐'

xadmin.site.register(views.CommAdminView, GlobalSetting)

图10

将app下表以下拉形式展开(折叠样式),效果如图11:

class GlobalSetting(object):

#页头

site_title = '悦动乐后台管理系统'

#页脚

site_footer = '悦动乐'

#左侧样式

menu_style='accordion'

图11

修改app名称:

只需修改每个app下的app.py文件,在config类中加上verbose_name=xxx,然后在对应init.py文件中加上default_app_config='对应config路径',效果如图12。

app.py配//代码效果参考:http://www.zidongmutanji.com/zsjx/475027.html

置:

from django.apps import AppConfig

class UsersConfig(AppConfig):

name = 'users'

verbose_name='用户管理'

init.py配置:

default_app_config='users.apps.UsersConfig'

图12

设置全局图标,效果如图13,对应图标代码可参考和

class GlobalSetting(object):

#页头

site_title = '悦动乐后台管理系统'

#页脚

site_footer = '悦动乐'

#左侧样式

menu_style='accordion'

# 设置models的全局图标

global_search_models = 【UserProfile, Sports】

global_models_icon = {

UserProfile: "glyphicon glyphicon-user", Sports: "fa fa-cloud"

}

图13

model_icon的使用:配置表的图标,可以在awesome官网上下载最新的font-awesome.css替换,并找寻到相应的icon书写

class Sport_FavAdmin(object):

list_display = 【'student', 'sport', 'add_time'】

search_fields = 【'student', 'sport'】

list_filter = 【'studentusername', 'sportsport_name', 'add_time'】

#相应表图标配置//代码效果参考:http://www.zidongmutanji.com/zsjx/586235.html

model_icon='fa fa-address-book'

显示数据详情,如图14:

class Sport_FavAdmin(object):

list_display = 【'student', 'sport', 'add_time'】

search_fields = 【'student', 'sport'】

list_filter = 【'studentusername', 'sport__sport_name', 'add_time'】

#显示详情

show_detail_fields=【'sport'】

图14

设置刷新时间,图15:

相关文章
|
SQL 监控 前端开发
tp5框架Fastadmin中的Log日志如何去用
tp5框架Fastadmin中的Log日志如何去用
1017 0
|
3月前
|
存储 JSON 关系型数据库
【干货满满】解密 API 数据解析:从 JSON 到数据库存储的完整流程
本文详解电商API开发中JSON数据解析与数据库存储的全流程,涵盖数据提取、清洗、转换及优化策略,结合Python实战代码与主流数据库方案,助开发者构建高效、可靠的数据处理管道。
|
传感器 机器学习/深度学习 安全
网络安全的主动防御策略
【8月更文挑战第1天】网络安全的主动防御策略是保护网络系统和数据安全的重要手段。通过传感器技术、智能分析、入侵检测与防护系统、网络安全态势感知、蜜罐技术与诱捕系统以及弱点修补与漏洞管理等关键技术的应用和实践,企业可以构建出全方位、多层次的主动防御体系,有效应对各种网络威胁和挑战。随着技术的不断进步和应用场景的不断拓展,主动防御策略将在网络安全领域发挥更加重要的作用。
441 10
|
关系型数据库 MySQL 应用服务中间件
LNMP详解(四)——LNMP原理与简单部署
LNMP详解(四)——LNMP原理与简单部署
385 2
cocos 2.4*项目实战笔记及源码分享 —— 飞机大战小游戏
cocos 2.4*项目实战笔记及源码分享 —— 飞机大战小游戏
390 0
|
监控 前端开发 JavaScript
如何使用浏览器调试前端代码?
【4月更文挑战第11天】前端开发中,浏览器调试是关键技能,能提升代码质量。本文介绍了如何使用浏览器的调试工具:1) 打开调试窗口(F12或右键检查);2) Elements标签页检查DOM结构和样式;3) Console调试JavaScript,查看日志和错误信息;4) Sources设置断点调试JS文件;5) 利用Network、Performance和Memory等标签页优化性能。熟悉调试工具、利用日志和错误信息能有效定位问题,提高开发效率。
719 7
|
12月前
|
前端开发 JavaScript 数据处理
JQuery 拦截请求 | Ajax 请求拦截
【10月更文挑战第4天】
494 1
|
前端开发 应用服务中间件 PHP
解决php因为输出内容太短无法流式(Stream)输出问题
本文探讨了PHP流式输出的问题,指出当每次`echo`的内容过短时,前端可能无法实时接收。通过测试发现,需达到一定长度(如1024字节)时流式输出才会生效。为解决此问题,建议在PHP代码中检查输出内容长度,不足时拼接特殊标记,前端接收到后通过正则表达式移除。示例代码提供了解决方案,文章鼓励读者留言讨论和点赞分享。关注作者微信公众号【xdub】获取更多相关内容。
172 2
|
消息中间件 Serverless Go
Serverless 应用引擎操作报错合集之通过自定义域名配置jwt认证,始终报错:"Code": "JWTTokenIsInvalid",是什么导致的
Serverless 应用引擎(SAE)是阿里云提供的Serverless PaaS平台,支持Spring Cloud、Dubbo、HSF等主流微服务框架,简化应用的部署、运维和弹性伸缩。在使用SAE过程中,可能会遇到各种操作报错。以下是一些常见的报错情况及其可能的原因和解决方法。
417 2
|
安全 Ubuntu 应用服务中间件
【报错】ubutun下启动nginx失败:500 internal server error
【报错】ubutun下启动nginx失败:500 internal server error
1090 0