Django 插件之 Xadmin
Django 是一个开放源代码的 Web 应用框架,由 Python 写成。Django 是走大而全的方向,它最出名的是其全自动化的管理后台:只需要使用起 ORM ,做简单的对象定义,它就能自动生成数据库结构、以及全功能的管理后台。
Django 自带的后台管理工具,在外观和功能便捷性方面是比较普通的,并不能让人十分满意,因此,许多的开发者开发出了比较具有鲜明特性的第三方后台管理工具,Xadmin 就是其中之一,下面记录 Xadmin 的特点及安装使用方法。
Xadmin 的特点
1、基于Bootstrap3
Xadmin 使用 Bootstrap3.0 框架精心打造。基于 Bootstrap3,Xadmin 天生就支持在多种屏幕上无缝浏览,并完全支持 Bootstrap 主题模板,让您的管理后台也动感、多样起来。
2、内置功能丰富
Xadmin 作为一款全面的后台管理系统框架,不仅提供了基本的 CRUD 功能,还内置了丰富的插件功能。包括数据导出、书签、图表、数据添加向导及图片相册等多种扩展功能。
3、真心强大的插件系统
Xadmin 的插件系统借鉴了其他领域成功框架的设计思想,让插件可以扩展系统的任何一个功能点。对于开发者,Xadmin 的插件开发简单;对于使用者,Xadmin 的插件安装方便。
Xadmin 的安装
方法一:通过 pip 安装
虚拟环境下:pip install xadmin
通过此命令安装,会同时安装 Xadmin 所需的依赖库:django-crispy-forms-1.6.1、django-formtools-2.0httplib2-0.9.2、以及 xadmin-0.6.1,
之后在 settings.py
文件中配置:
# settings.py
INSTALLED_APPS = [
...
'crispy_forms',
'xadmin',
]
urls.py
中配置,代替 Django 默认的 admin:
# urls.py
...
import xadmin
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
]
然后开始进行数据库的迁移 (默认的开发工具是 Pycharm):
在 run manage.py Task 中运行命令完成数据迁移:
makemigrations
migrate
可以看到数据库中多出几个数据表:
运行项目,在浏览器地址栏输入:http://127.0.0.1:8000/xadmin/,可以看到登录界面已经改变,如下:
xadmin2.png方法二:通过源码安装 (优点:可对源码修改,体验更新特性)
浏览器地址栏输入:https://codeload.github.com/sshwsfc/xadmin/zip/master 下载源码,解压缩后将名为 xadmin 的文件夹拷贝进项目根目录下。
tips:
1、在根目录下新建一个名为 Third_apps 的 package (mark 为 sources root)可以方便管理第三方工具,保证项目可读性。然后将 xadmin 文件拉入其中。
2、通过源码安装,要手动安装 xadmin 的依赖包(见方法一)
然后在 settings.py
文件中配置:
# settings.py
sys.path.insert(0, os.path.join(BASE_DIR, 'Third_apps')) # 此行代码加上,确保项目配置正确
INSTALLED_APPS = [
...
'crispy_forms',
'xadmin',
]
urls.py
中配置,取代 Django 默认的 admin:
# urls.py
import xadmin
urlpatterns = [
url(r'^xadmin/', xadmin.site.urls),
]
然后开始进行数据库的迁移 (默认的开发工具是 Pycharm):
在 run manage.py Task 中运行命令完成数据迁移:
makemigrations
migrate
基本配置步骤如方法一,方法二配置完成。
Xadmin 中 model 注册
在app 目录下,新建 adminx.py
文件以完成原来 admin.py
的功能,注意不要混淆:
# adminx.py
import xadmin
from xadmin import views
from .models import Authors
class AuthorsAdmin(object):
list_display = ['name', 'note', 'contact', 'add_time'] # 字段详情
search_fields = ['name', 'note', 'contact'] # 搜索框功能
list_filter = ['name', 'note', 'contact', 'add_time'] # 过滤器
xadmin.site.register(Authors, AuthorsAdmin)
models.py
中的例子模型:
# models.py
from __future__ import unicode_literals
from datetime import datetime
from django.db import models
class Authors(models.Model):
name = models.CharField(max_length=30, verbose_name=u'作者')
note = models.CharField(max_length=200, verbose_name=u'简介', default='')
contact = models.CharField(max_length=30, verbose_name=u'联系方式', default='')
add_time = models.DateTimeField(default=datetime.now, verbose_name=u'添加时间')
class Meta:
verbose_name = u'作者'
verbose_name_plural = verbose_name #复数与单数名称相同
def __unicode__(self):
return self.name
在后台的效果如下:
xadmin5.pngxadmin 确实是一个强大的插件,文中介绍的只是常用的几个功能,如主题变换,只读字段等都没有在文中一一展开,更多内容详见文档。
参考资料:
xadmin 文档:http://xadmin.readthedocs.io/en/docs-chinese/
xadmin 官网:http://sshwsfc.github.io/xadmin/