Django2_07_后台管理xadmin

Xadmin

官方网站

https://github.com/sshwsfc/xadmin

切换分支到 django2

Django2_07_后台管理xadmin_第1张图片
image.png

源码方式安装

  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 路径中

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
Django2_07_后台管理xadmin_第2张图片
image.png

xadmin 中注册自己的 models

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

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

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

import xadmin
from .models import EmailVerifyRecord

class EmailVerifyRecordAdmin(object):
    pass

xadmin.site.register(EmailVerifyRecord, EmailVerifyRecordAdmin)
Django2_07_后台管理xadmin_第3张图片
image.png

为注册的 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 的字段名
Django2_07_后台管理xadmin_第4张图片
image.png

添加功能之前

Django2_07_后台管理xadmin_第5张图片
添加功能之前

添加功能之后

Django2_07_后台管理xadmin_第6张图片
添加功能之后

字段添加模板

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. 修改页面左上角的内容和页脚
Django2_07_后台管理xadmin_第7张图片
修改页脚前

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

class GlobalSettings(object):
    site_title = "鲨鱼在线"
    site_footer = "鲨鱼网络科技有限公司"
    
xadmin.site.register(views.CommAdminView, GlobalSettings)

修改后

Django2_07_后台管理xadmin_第8张图片
修改后
  1. 修改左侧菜单样式

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

class GlobalSettings(object):
    ...略...
    menu_style = 'accordion'
Django2_07_后台管理xadmin_第9张图片
修改左侧菜单样式
  1. 修改自定义的应用名称为中文

之前

Django2_07_后台管理xadmin_第10张图片
之前

之后

Django2_07_后台管理xadmin_第11张图片
image.png

实现方法

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

Django2_07_后台管理xadmin_第12张图片
实现方法

xadmin 的进阶开发

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

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

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

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

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

cssfonts

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

xadmin/static/xadmin/vendor/font-awesome

Django2_07_后台管理xadmin_第13张图片
image.png

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

Django2_07_后台管理xadmin_第14张图片
点击图标库

Django2_07_后台管理xadmin_第15张图片
image.png

Django2_07_后台管理xadmin_第16张图片
image.png

再在 adminx.py 中使用

Django2_07_后台管理xadmin_第17张图片
image.png

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

查看效果。

Macshift + command + r

image.png

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