4.后台管理xadmin

Xadmin

python3 manage.py createsuperuser

官方网站

https://github.com/sshwsfc/xadmin

切换分支到 django2

image

源码方式安装

  1. 下载源码
shell> wget  https://codeload.github.com/sshwsfc/xadmin/zip/django2
shell> yum install   unzip
shell> unzip  django2

速度慢的话,建议 Fork 到自己的仓库,之后从自己的仓库克隆

  1. 把下载好的源码中的 xadmin 文件夹复制到项目的根目录
shell> cd xadmin-django2
shell> mkdir /path/project/extra_apps
shell> cp -r xadmin /path/project/extra_apps

/path/project 为你项目的主目录

settings.py 文件中把 extra_apps 目录添加到 sys.path 路径中

import sys
sys.path.insert(0, os.path.join(BASE_DIR, 'extra_apps'))

  1. 安装依赖包
  • django-crispy-forms > = 1.6.0(适用于xadmin酥脆形式)

  • django-reversion([OPTION]对于对象历史和恢复功能,请在你的django中选择正确的版本,参见changelog)

  • django-formtools([OPTION]用于wizward表格)

  • xlwt([OPTION]用于导出xls文件)

  • xlsxwriter([OPTION]用于导出xlsx文件)

  • future

  • django-import-export

  • six

pip3 install django-reversion django-crispy-forms django-formtools xlwt xlsxwriter future django-import-export httplib2  six

  1. 注册 xadmin 应用到 项目中
# settings.py 文件的内容

INSTALLED_APPS = [
    ...略...
    'xadmin.apps.XAdminConfig',
    'crispy_forms',
]

  1. 修改路由

项目的根路由下修改

from django.contrib import admin

urlpatterns = [
    url(r'^admin/', admin.site.urls),
]
# 改为
from extra_apps import xadmin

urlpatterns = [
    path('xadmin/', xadmin.site.urls),
]

  1. 更新 xadmin 的表到数据库中

在项目主目录下执行

shell> python3 manage.py makemigrations
shell> python3 manage.py migrate

  1. 创建管理账户
shell> python3 manage.py createsuperuser

  1. 启动并访问测试
    使用浏览器访问
http://127.0.0.1:8000/xadmin

image

xadmin 中注册自己的 models

  1. 可以在每个应用中创建adminx.py 文件

  2. 之后在这个文件中进行注册

    示例: 注册 EmailVerifyRecord 这个 model, 文件内容如下:

import xadmin
from .models import EmailVerifyRecord

class EmailVerifyRecordAdmin(object):
    pass

xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)

image

为注册的 model 添加显示字段、搜索和过滤字段的功能

编辑 adminx.py 文件,在管理 model 的类里添加如下 内容

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 的字段名

image

添加功能之前

image

添加功能之后

image

字段添加模板

cls_name = "UserCourse"

f="""user
course
add_time
"""
fields = tuple(f.split())

TPL = """
import xadmin

from .models import {cls_name}

class {cls_name}Admin(object):
    list_display = {fields}
    list_filter = {fields}
    search_fields = {fields}

xadmin.site.register({cls_name}, {cls_name}Admin)

""".format(cls_name=cls_name, fields=fields)
print(TPL)

全局配置

  1. 使用主题

一般可以在任意一个应用的 adminx.py 文件中添加如下内容

from xadmin import views
class BaseSetting(object):
    enable_themes = True  # 授权使用主题
    use_bootswatch = True  # 使用 bootstrap 的主题

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

  1. 修改页面左上角的内容和页脚
image

继续在 adminx.py 文件中添加如下内容

class GlobalSettings(object):
    site_title = "鲨鱼在线"
    site_footer = "鲨鱼网络科技有限公司"

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

修改后

image
  1. 修改左侧菜单样式

只需要在刚才我们定义的 GlobalSettings 中添加如下内容

class GlobalSettings(object):
    ...略...
    menu_style = 'accordion'

image
  1. 修改自定义的应用名称为中文

之前

image

之后

image

实现方法

只需在每个 应用目录下的 apps.py 文件中的类中添加 verbose_name 属性即可,以 users 为例

image

xadmin 的进阶开发

更新后台注册model用到的图标

xadmin 使用的是 https://fontawesome.com/

中文网: http://www.fontawesome.com.cn/

到网站下载最新版本,之后解压拷贝到xadmin 的源码中即可

解压后只需要如下两个目录

cssfonts

复制的自己项目的 xadmin 源码的如下目录

xadmin/static/xadmin/vendor/font-awesome

image

之后按照官网提示找到图片都一组类名称

image
image
image

再在 adminx.py 中使用

image

Contro + F5 组合键,进行强制刷新页面,让页面重新加载静态文件,

查看效果。

Macshift + command + r

image

你可能感兴趣的:(4.后台管理xadmin)