官方文档: http://xadmin.readthedocs.io/en/docs-chinese/
版本: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 urlfrom django.contrib import adminimport xadminurlpatterns = [ # url(r'^admin/', admin.site.urls), url(r'^xadmin/', xadmin.site.urls),] |
- 数据库同步
|
1
2
|
makemigrationsmigrate |
- 访问首页

源码安装部署
下载: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 xadminfrom .models import EmailVerifyRecordclass 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 viewsclass BaseSetting(object): enable_themes = True use_bootswatch = Truexadmin.site.register(views.BaseAdminView, BaseSetting) |
全局应用
- 页头和页尾自定义

adminx.py文件增加
|
1
2
3
4
5
6
7
|
from xadmin import viewsclass 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 viewsclass 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 AppConfigclass 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_modelUser = 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 PermissionDeniedfrom xadmin.views.base import filter_hookfrom xadmin.util import model_format_dict, model_ngettextclass 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自带的日志记录。用于审计操作者的操作内容。


转载 线程初步了解
gdal库中设置prj4库全路径的用法
比较ArrayList、LinkedList、Vector
JavaScript创建日志文件并记录时间的做法
从length与length()开始谈Java
Java异常处理示例
hudson添加批处理编译命令的注意事项
使用相对路径导入ado库的方法
如何将字段中带逗号的SQLite数据库数据导入到MySQL
- 最新文章
-
微信开发,对象转换为xml时候引用XStream这个类报错处理方案
openstack_swift源代码分析——Swift单机部署
十大紧缺行业公布,近半工作机会在一线
HDU 3085 双广
第四天 ThinkPHP手把手高速拼接站点(四)
weka入门
Java设计模式-代理模式之动态代理(附源代码分析)
自己写浏览器和webserver的分析!
JavaScript-2.4 改进的Hello程序,使用div,---ShinePans
LA 5009 (HDU 3714) Error Curves (三分)
- 热门文章
-
Filter介绍,运行顺序,实例
利用HTML5 Canvas和Javascript实现的蚁群算法求解TSP问题演示
转载 【.NET基础】--委托、事件、线程(2) https://www.cnblogs.com/chengzish/p/4569912.html
转载 【.NET基础】--委托、事件、线程(1) https://www.cnblogs.com/chengzish/p/4559268.html
转载 三、并行编程
浅谈C#中常见的委托<Func,Action,Predicate>(转)
转载 多线程实际运用<第七篇>
转载 互斥体与互锁 <第五篇>
转载 锁机制与原子操作 <第四篇>
转载 信号量 <第六篇>
Copyright © 2011-2022 走看看