Django 后台管理xadmin

一. xadmin的使用

  后台管理在开发中可以给我们提供很大的便利,django自带了一个后台管理admin,不过还有一个xadmin比django自带的好用一些,功能更加强大,为模型提供了版本控制,可以回滚数据。django中权限主要靠六表实现,首先是基础的user、group、permission三表,然后分别是user与group的多对多关系表、group与permission的多对多关系表,最后django特有的user与permission的多对多关系表。django基于用户user、组group、权限permission三张表的关系,一共六张表来实现权限管理。

  xadmin里面提供了权限的管理,而且使用很简单。

1.1 xadmin的使用流程

  1. 安装xadmin

  因为xadmin是基于Pillow模块的,所以需要先安装Pillow模块:

# 安装Pillow模块
pip install Pillow

# 安装xadmin第一种方式
pip install https://codeload.github.com/sshwsfc/xadmin/zip/django2

# 安装xadmin第二种方式
pip install xadmin

  1.2 在配置的APP中注册xadmin

INSTALLED_APPS = [
    # ...
    # xamin主体模块
    'xadmin',
    # 渲染表格模块
    'crispy_forms',
    # 为模型通过版本控制,可以回滚数据
    'reversion',
]

  1.3 xadmin数据库迁移

  因为xadmin是有自己的数据库模型类的,所以需要进行数据库迁移操作。

python manage.py makemigrations
python manage.py migrate

  1.4 在主路由中替换掉admin

# xadmin的依赖
import xadmin
xadmin.autodiscover()
# xversion模块自动注册需要版本控制的 Model
from xadmin.plugins import xversion
xversion.register_models()

urlpatterns = [
    # 将原本的admin路由改成以下方式即可
    path(r'xadmin/', xadmin.site.urls),
]

  1.5 创建超级用户

# 在项目根目录下的终端
python manage.py createsuperuser

# 账号密码设置(随意设置):admin | admin

  1.6 完成xadmin全局配置:在APP下新建adminx.py

# xadmin全局配置
import xadmin
from xadmin import views

class GlobalSettings(object):
    """xadmin的全局配置"""
    site_title = "海贼学城"  # 设置站点标题
    site_footer = "海贼王有限公司"  # 设置站点的页脚
    menu_style = "accordion"  # 设置菜单折叠

xadmin.site.register(views.CommAdminView, GlobalSettings)

  配置前:

  利用以上配置后,在项目的配置文件中修改时区与语言设置如下:

# 将英文改为中文
LANGUAGE_CODE = 'zh-hans'

# 设定时区
TIME_ZONE = 'Asia/Shanghai'

USE_I18N = True

USE_L10N = True

USE_TZ = True

  最终显示如下:

  1.7 在adminx.py中注册model

from . import models
# 注册
xadmin.site.register(models.模型表名)

  同时模型表中字段可以增加verbose_name属性,表示后台管理时显示的名字。

  1.8 修改app:home的名字:xadmin页面上的显示效果

# APP下的__init__.py
default_app_config = "home.apps.HomeConfig"

# APP下的apps.py
from django.apps import AppConfig
class HomeConfig(AppConfig):
    name = 'home'
    verbose_name = '我的首页'
posted @ 2019-07-23 23:15  maoruqiang  阅读(1384)  评论(0编辑  收藏  举报