当前位置: 首页 > news >正文

django xadmin 安装和使用

官方文档: 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  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自定义

官网下载:http://fontawesome.io/

下载后覆盖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自带的日志记录。用于审计操作者的操作内容。

 

 
分类:  django
 
好文要顶  关注我  收藏该文   
shhnwangjian
关注 - 11
粉丝 - 83
 
 
+加关注
2
0
 
 
 
« 上一篇: OpenStack 存储服务 Cinder存储节点部署NFS(十七)
» 下一篇: OpenStack 网络服务 Neutron 多网卡(提供者网络)(十八)
posted @  2017-02-07 09:11 shhnwangjian 阅读(18742) 评论(3) 编辑 收藏

 

 
   回复引用
#1楼   2017-12-27 17:53 风子陈  
你好,我的中文名没有生效,请指导一下.



 

转载于:https://www.cnblogs.com/meticuloustodo/p/10368227.html

相关文章:

  • Linux-Vim基本操作
  • unity手动创建网格
  • hibernate一级缓存session的操作
  • baked lighting
  • 201902142017_《Node.js之事件一二事(1)》
  • machine_math
  • baked light+bake indirect+sampling lightmap
  • linux基础随记
  • 随手练——十六进制转八进制 (不限制长度)
  • 认识DiffuseAndSpecularFromMetallic和UNITY_BRDF_PBS
  • 如何将自发光和漫反射添加到烘焙贴图中
  • Qt+QGIS二次开发:QGIS中使用QgsRubberBand类创建临时图形
  • Shadowmask和Distance Shadowmask的区别
  • Angular7_获取异步方法里面的数据
  • maven tomcat jstl 异常
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • 【笔记】你不知道的JS读书笔记——Promise
  • 2017届校招提前批面试回顾
  • angular学习第一篇-----环境搭建
  • IDEA 插件开发入门教程
  • Java方法详解
  • js对象的深浅拷贝
  • Netty源码解析1-Buffer
  • Python进阶细节
  • React-redux的原理以及使用
  • Storybook 5.0正式发布:有史以来变化最大的版本\n
  • 分享几个不错的工具
  • 快速构建spring-cloud+sleuth+rabbit+ zipkin+es+kibana+grafana日志跟踪平台
  • 设计模式(12)迭代器模式(讲解+应用)
  • 小而合理的前端理论:rscss和rsjs
  • 看到一个关于网页设计的文章分享过来!大家看看!
  • 《TCP IP 详解卷1:协议》阅读笔记 - 第六章
  • Spark2.4.0源码分析之WorldCount 默认shuffling并行度为200(九) ...
  • 第二十章:异步和文件I/O.(二十三)
  • 关于Android全面屏虚拟导航栏的适配总结
  • (16)Reactor的测试——响应式Spring的道法术器
  • (Matlab)遗传算法优化的BP神经网络实现回归预测
  • (附源码)springboot高校宿舍交电费系统 毕业设计031552
  • (免费领源码)python#django#mysql校园校园宿舍管理系统84831-计算机毕业设计项目选题推荐
  • (一)认识微服务
  • ***微信公众号支付+微信H5支付+微信扫码支付+小程序支付+APP微信支付解决方案总结...
  • .“空心村”成因分析及解决对策122344
  • .mysql secret在哪_MySQL如何使用索引
  • .NET Core WebAPI中封装Swagger配置
  • .net 无限分类
  • .Net环境下的缓存技术介绍
  • [ Linux Audio 篇 ] 音频开发入门基础知识
  • [Apio2012]dispatching 左偏树
  • [BJDCTF2020]The mystery of ip1
  • [BUG] Hadoop-3.3.4集群yarn管理页面子队列不显示任务
  • [C#]DataTable常用操作总结【转】
  • [C#]winform使用引导APSF和梯度自适应卷积增强夜间雾图像的可见性算法实现夜间雾霾图像的可见度增强
  • [C/C++]_[初级]_[关于编译时出现有符号-无符号不匹配的警告-sizeof使用注意事项]
  • [C++]打开新世界的大门之C++入门
  • [daily][archlinux][game] 几个linux下还不错的游戏