Django-xadmin的介绍
Django
是python
的重量级web框架,写得少,做得多,非常适合后端开发,它很大的一个亮点是,自带后台管理模块,但它自带的后台管理有点丑,而Xadmin
是基于bootstrap
开发的一套后台管理框架,界面非常美观,只需几步就可以替换自带的Django_admin
具体的安装步骤
- xadmin在python2.x时代的安装方法
在python2.x时代,安装xadmin是通过如下命令
pip install xadmin
2.xadmin
在python3.6.x
时代的安装方法
需要安装如下的包
pip3 install django-import-export
pip3 install django-reversion
pip3 install django-formtools==2.1
pip3 install future
pip3 install httplib2
pip3 install six
pip3 install django-crispy-forms
2.1 下载xadmin
2.2、解压缩,得到xadmin
文件夹,复制到项目的extra_apps
,解压缩,得到xadmin
文件夹, 如下图所示:
2.3、在django中的根目录下创建Python Package
,命名为extra_apps
(如果不存在此文件夹则创建, 然后 鼠标右键extra_app
随后 mark as sources root
)
(Python Package
是带init
文件的,跟普通Package
不同)
创建完extra_apps
,需要在settings
中配置一下extra_apps
。设置为可搜索的路径
import os
import sys
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps')) # 把extra_apps文件夹添加到搜索目录中
2.4、把xadmin
文件夹复制到extra_apps
2.5、xadmin
的配置
配置到 INSTALLED_APPS
## 显示中文
# Application definition
# LANGUAGE_CODE = 'en-us'
LANGUAGE_CODE = 'zh-hans'
# TIME_ZONE = 'UTC'
TIME_ZONE = 'Asia/Shanghai'
INSTALLED_APPS = [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'xadmin',
'crispy_forms', # 注意crispy_forms之间是下划线隔开,不是横线
]
2.6、修改urls.py
的admin
import xadmin
from django.conf.urls import url
from django.contrib import admin
urlpatterns = [
# url('admin/', admin.site.urls),
url(r'^xadmin/', xadmin.site.urls),
]
2.7、迁移文件
python3 manage.py makemigrations
python3 manage.py migrate
迁移完成后,我们看到数据库多了几张表
2.8、pycharm
创建superuser
用户
python3 manage.py makemigrations
python3 manage.py migrate
至此完成。
如果报错,请先把原先旧的app
里面admin.py
里面的注册代码去掉,再试试
运行一下项目,访问
xadmin的使用
1.需要在app
中创建adminx.py
文件
import xadmin
from repository import models
from xadmin import views
class UserProfileAdmin(object):
### 显示的字段名称
list_display = ['id','name' ,'email','phone','mobile']
# 搜索时可输入的字段内容
search_fields = ['id', 'name', 'email', 'phone']
# 点击id可进入详细界面进行编辑(默认的)
list_display_links = ('id',)
## 可编辑的列名
list_editable = ['name' ,'email','phone','mobile']
# list_filter = ['name' ,'email','phone','mobile']
# 每页显示多少条
list_per_page = 20
#根据id排序
ordering = ('id',)
#设置只读字段
readonly_fields = ('user_email',)
#显示本条数据的所有信息
show_detail_fields = ['asset_name']
xadmin.site.register(models.UserProfile,UserProfileAdmin)
3.数据导出
如果想要导出Excel
数据,需要安装xlwt
。
默认情况下,xadmin
会提供Excel
,CSV
,XML
,json
四种格式的数据导出,可以通过设置OptionClass
的list_export
属性来指定使用哪些导出格式(四种格式分别用xls
,csv
,xml
,json
表示)或是将list_export
设置为None
来禁用数据导出功能
list_export = ('xls', 'xml', 'json')
list_export_fields = ('id', 'name', 'title')
4.设置全局的配置
# 全局修改,固定写法
class GlobalSettings(object):
# 修改title
site_title = 'xxx后台管理界面'
# 修改footer
site_footer = 'xxx的公司'
# 收起菜单
menu_style = 'accordion'
# 设置 models图标
# https://v3.bootcss.com/components/
# http://www.yeahzan.com/fa/facss.html
global_search_models = [models.Disk, models.Server]
global_models_icon = {
# Server: "glyphicon glyphicon-tree-conifer", Pool: "fa fa-cloud"
models.Server: "fa fa-linux", models.Disk: "fa fa-cloud"
}
# 将title和footer信息进行注册
xadmin.site.register(views.CommAdminView,GlobalSettings)
- 注册模型与对应的管理类
xadmin.site.register(models.Disk, DiskAdmin)
xadmin.site.register(models.Server, ServerAdmin)
xadmin.site.register(models.IDC, IDCAdmin)
xadmin.site.register(models.UserProfile, UserProfileAdmin)
xadmin.site.register(models.UserGroup, UserGroupAdmin)