django xadmin 安装和使用

版本:django1.9

 

pip安装部署

pip install xadmin
  • settings.py配置

INSTALLED_APPS中增加2个app:xadmin、crispy_forms

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
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),
]
  • 数据库同步
makemigrations
migrate
  • 访问首页

 

 

源码安装部署

下载:https://github.com/sshwsfc/xadmin

解压xadmin-master.zip文件

将xadmin-master文件中xadmin目录复制到自己的django项目下

 

xadmin注册

已在models创建表EmailVerifyRecord

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文件

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文件增加

from xadmin import views

class BaseSetting(object):
    enable_themes = True
    use_bootswatch = True

xadmin.site.register(views.BaseAdminView, BaseSetting)

 

全局应用

  • 页头和页尾自定义

adminx.py文件增加

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文件增加

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文件

# -*- coding: utf-8 -*-
from django.apps import AppConfig


class UsersConfig(AppConfig):
    name = 'users'
    verbose_name = u'用户信息'

__init__.py文件

default_app_config = "users.apps.UsersConfig"

 

font awesome自定义

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

下载后覆盖css、fonts目录

在adminx.py文件中引入model_icon

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源码中加入下面内容

from django.contrib.auth import get_user_model
User = get_user_model()

修改密码,需要更改源码

 

actions制作案例

adminx.py文件内容

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

 

posted @ 2017-02-07 09:11  shhnwangjian  阅读(29589)  评论(3编辑  收藏  举报