django xadmin 安装和使用

版本: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自带的日志记录。用于审计操作者的操作内容。

 

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值