版本:django1.9
pip安装部署
|
1
|
pip install xadmin
|
- settings.py配置
INSTALLED_APPS中增加2个app:xadmin、crispy_forms
|
1
2
3
4
5
6
7
8
9
10
|
INSTALLED_APPS
= [
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'xadmin',
'crispy_forms',
]
|
- urls.py配置,xadmin替换admin
|
1
2
3
4
5
6
7
8
|
from
django.conf.urls import url
from
django.contrib import admin
import xadmin
urlpatterns
= [
#
url(r'^admin/', admin.site.urls),
url(r'^xadmin/',
xadmin.site.urls),
]
|
- 数据库同步
|
1
2
|
makemigrations
migrate
|
- 访问首页
源码安装部署
下载:https://github.com/sshwsfc/xadmin
解压xadmin-master.zip文件
将xadmin-master文件中xadmin目录复制到自己的django项目下
xadmin注册
已在models创建表EmailVerifyRecord
|
1
2
3
4
5
6
7
8
9
|
class
EmailVerifyRecord(models.Model):
email_choices
= (
('register',
u'注册'),
('forget',
u'找回密码'),
)
code
= models.CharField(max_length=20, verbose_name=u'验证码')
email
= models.EmailField(max_length=50, verbose_name=u'邮箱')
send_type
= models.CharField(choices=email_choices, max_length=10, verbose_name=u'验证码类型')
send_time
= models.DateTimeField(default=datetime.now, verbose_name=u'发送时间')
|
在创建的app下创建adminx.py文件
|
1
2
3
4
5
6
7
8
9
|
import xadmin
from
.models import EmailVerifyRecord
class
EmailVerifyRecordAdmin(object):
list_display
= ['code', 'email', 'send_type', 'send_time']
search_fields
= ['code', 'email', 'send_type']
list_filter
= ['code', 'email', 'send_type', 'send_time']
xadmin.site.register(EmailVerifyRecord,
EmailVerifyRecordAdmin)
|
主题应用
adminx.py文件增加
|
1
2
3
4
5
6
7
|
from
xadmin import views
class
BaseSetting(object):
enable_themes
= True
use_bootswatch
= True
xadmin.site.register(views.BaseAdminView,
BaseSetting)
|
全局应用
- 页头和页尾自定义
adminx.py文件增加
|
1
2
3
4
5
6
7
|
from
xadmin import views
class
GlobalSetting(object):
site_title
= "shhnwangjian后台管理系统"
site_footer
= "http://www.cnblogs.com/shhnwangjian/"
xadmin.site.register(views.CommAdminView,
GlobalSetting)
|
- 左侧app中文名称定义和多表紧缩
修改前
修改后
adminx.py文件增加
|
1
2
3
4
5
6
7
8
|
from
xadmin import views
class
GlobalSetting(object):
site_title
= "shhnwangjian后台管理系统"
site_footer
= "http://www.cnblogs.com/shhnwangjian/"
menu_style
= "accordion"
xadmin.site.register(views.CommAdminView,
GlobalSetting)
|
apps.py文件
|
1
2
3
4
5
6
7
|
#
-*- coding: utf-8 -*-
from
django.apps import AppConfig
class
UsersConfig(AppConfig):
name
= 'users'
verbose_name
= u'用户信息'
|
__init__.py文件
|
1
|
default_app_config
= "users.apps.UsersConfig"
|
font awesome自定义
下载后覆盖css、fonts目录
在adminx.py文件中引入model_icon
|
1
2
3
4
5
6
7
|
class
EmailVerifyRecordAdmin(object):
list_display
= ['code', 'email', 'send_type', 'send_time']
search_fields
= ['code', 'email', 'send_type']
list_filter
= ['code', 'email', 'send_type', 'send_time']
model_icon
= 'fa
fa-address-book-o'
xadmin.site.register(EmailVerifyRecord,
EmailVerifyRecordAdmin)
|
model_icon这个值,在http://fontawesome.io/icons/ 中选中的图标或class内容,如下图
引用自定义的用户信息
如上图目录中xadmin源码中加入下面内容
|
1
2
|
from
django.contrib.auth import get_user_model
User
= get_user_model()
|
修改密码,需要更改源码
actions制作案例
adminx.py文件内容
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
|
from
django.core.exceptions import PermissionDenied
from
xadmin.views.base import filter_hook
from
xadmin.util import model_format_dict,
model_ngettext
class
zabbixitmes_display_off_action(BaseActionView):
action_name
= "zabbixitmes_display_off_action"
description
= u'%(verbose_name_plural)s
展示和采集关闭'
model_perm
= 'change'
@filter_hook
def
change_models(self, queryset):
n
= queryset.count()
if n:
self.log('change',
(u'
%(count)d %(items)s. 展示和采集关闭')
%
{"count":
n, "items":
model_ngettext(self.opts, n)})
for obj in queryset:
obj.display_insert
= 0
obj.save()
def
do_action(self, queryset):
if not
self.has_change_permission():
raise
PermissionDenied
if self.request.POST:
self.change_models(queryset)
return None
|
提示:可以参考BaseActionView中的删除DeleteSelectedAction,可以实现xadmin自带的日志记录。用于审计操作者的操作内容。