xadmin帮助文档 下载本文

Django Xadmin

一、安装设置Xadmin 1、Install Requires

? django >=1.4

? django-crispy-forms >=1.2.3 (For xadmin crispy forms)

? django-reversion ([OPTION] For object history and reversion feature, please select right version by your django, see changelog ) ? xlwt ([OPTION] For export xls files)

? xlsxwriter ([OPTION] For export xlsx files) 2、Install

pip install django-xadmin pip install django-reversion 3、在自己的项目中使用

Xadmin 作为 Django 的模块, 可以很方便的使用在 Django 的网站中。首先编辑 settings.py 添加 Xadmin 的模块到 INSTALLED_APPS 中 INSTALLED_APPS = ( 'xadmin',

'crispy_forms',

'reversion', )

然后添加 URL-patterns 以及 autodiscover 操作: import xadmin

xadmin.autodiscover()

# version模块自动注册需要版本控制的 Model from xadmin.plugins import xversion

urlpatterns = patterns('',

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

打开浏览器, 输入 http://127.0.0.1:8000 看一下效果吧。

二、Xadmin功能特征 1、基于Bootstrap3

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

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

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

数据筛选是Xadmin的强项。通过Xadmin的过滤器,您可以使用模糊查找,数字范围查找,日期范围查找等多种高级查找方式。并且可以将您的查询结果存为书签方便今后使用。 5、完善的系统权限

Xadmin安全系统,控制粒度可以精细到每行数据,甚至每个字段,结合角色及用户组,几乎可以胜任任何变态的权限系统要求。

Xadmin 插件制作 插件原理

Xadmin 的插件系统架构设计一定程度上借鉴了wordpress的设计。想要了解Xadmin 的插件系统架构首先需要了解Xadmin AdminView的概念。简单来说,就是 Xadmin 系统中每一个页面都是一个AdminView对象返回的HttpResponse结果。xadmin的插件系统做的事情其实就是在AdminView运行过程中改变其执行的逻辑,或是改变其返回的结果,起到修改或增强原有功能的效果。下面让我们看看整个插件从制作完成到实际运行的整个过程。 首先需要创建自己的插件类, 插件类继承 BaseAdminPlugin class HelloWorldPlugin(BaseAdminPlugin): ...

开发好的插件首先要注册到 Xadmin 中, 示例代码如下:

# ListAdminView 是 Model 列表页面

xadmin.site.register_plugin(HelloWorldPlugin, ListAdminView)

其中插件的注册和使用可以参看 xadmin.sites.AdminSite.register_plugin()

当将插件注册到 Xadmin 后,Xadmin 在创建AdminView实例的时候会将该插件放入实例的plugins属性。当AdminView在处理请求 时,会首先逐个调用plugins中插件的init_request()方法,插件在该方法中一般进行初始化的操作并且返回一个 Boolean 值告诉AdminView是否需要加载该插件。当init_request()方法返回值为False时,AdminView不会加载该插件。实例如下:

class HelloWorldPlugin(BaseAdminPlugin): say_hello = False

# 初始化方法根据 say_hello属性值返回

def init_request(self, *args, **kwargs): return bool(self.say_hello)

在以上实例中,插件根据自身的say_hello属性来决定是否让自己被加载。您可能会迷惑,say_hello属性看起来一直会是False呀,那样这个插件不是永远不会被加载? 其实 Xadmin 在创建插件实例的时候会将OptionClass的同名属性替换插件的属性。这样在不同的OptionClass下会有不同的插件结果,实例如下: class SomeModelAdmin(object): say_hello = True ...

site.register(SomeModel, SomeModelAdmin)

理解以上内容后,让我们再看看插件具体是如何起作用的。在 AdminView 的执行过程中,可以被插件截获或修改的方法使用filter_hook()装饰,实例如下: