zoukankan      html  css  js  c++  java
  • 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自带的日志记录。用于审计操作者的操作内容。

     
  • 相关阅读:
    布局-float-margin-padding
    乡镇投票笔记
    Ajax实战
    Form,tagName和nodeName的区别
    Form,选择并转移导航菜单
    如何在ajax请求中设置特殊的RequestHeader
    nginx配置转发详解
    利用循环遍历的方式判断某个对象是否属于这个数组
    几个原生js方法总结
    chrome JS关闭当前页无效问题
  • 原文地址:https://www.cnblogs.com/meticuloustodo/p/10368227.html
Copyright © 2011-2022 走看看