Django集成xadmin2.0 配置详解

1,768 阅读3分钟

xadmin简介

As everyone knows, Django自带的admin后台管理界面不太好看, 使用习惯也不符合国内习惯, 因此我们会选择一款基于bootstrap的后台xadmin, 更符合国内使用习惯, 界面也相对更好看。

一、xadmin下载 解压 配置

  1. 下载链接: github.com/sshwsfc/xad… (注意: 要下载xadmin的zip压缩包)

  2. 解压到本地目录, 解压后有个xadmin文件夹, 就是我们要使用的xadmin源码啦

二、集成xadmin到我们的项目

  1. 项目准备

    新建一个Django项目, 集成到已有项目则跳过

  2. 在项目根目录新建文件夹 extra_apps

    将之前解压的xadmin文件夹复制到 extra_apps目录下

  3. 通过pycharm 选中extra_apps文件夹点击鼠标右键选中菜单mark directory as 选择 sources root

  4. 修改settings.py 配置

# 在INSTALLED_APPS中添加以下app
INSTALLED_APPS = [
......
'xadmin'
'crispy_forms'
'reversion'
]

# 添加extra_apps目录
sys.path.insert(0,os.path.join(BASE_DIR,'extra_apps'))
  1. 配置 urls.py 添加xadmin路由
import xadmin
urlpatterns = [
    #path('admin/', admin.site.urls),   # django自带admin 我们不用就注释掉
    path('admin/', xadmin.site.urls),
]
  1. 迁移数据
# 命令行执行以下两条命令, 已有的项目也要执行, 生成xadmin相关数据表
python manage.py makemigrations 
python manage.py migrate

到这里我们的xadmin就已经继承到我们的Django项目里了, 运行项目, 浏览器访问: http://127.0.0.1:8000/admin/ 路由既可以看到登录界面啦

三、编写admin.py 模块

Django自带的admin注册方式跟xadmin注册方式稍有不同, 我们下边在admin.py模块中将我们的模型注册到xadmin中

import xadmin
from .models import Orders

class OrderAdmin(object):
     # xadmin里面显示的字段
     list_display = ['orderid', 'mobile', 'add_time']
     # 引入搜索框, 可以根据image搜索也可以根据url搜索
     search_fields = ['order_id', 'mobile']
     # 添加过滤器
     list_filter = ['add_time']
     
#注册
xadmin.site.register(Orders, OredrAdmin)

注册之后刷新xadmin后台就能看到我们注册的模型啦

**xadmin模块常用字段含义

list_display  			控制列表展示的字段
search_fields 			控制可以通过搜索框搜索的字段名称,xadmin使用的是模糊查询
list_filter 			可以进行过滤操作的列
ordering	   		默认排序的字段
readonly_fields 		在编辑页面的只读字段
exclude 			在编辑页面隐藏的字段
list_editable 			在列表页可以快速直接编辑的字段
show_detail_fileds 		在列表页提供快速显示详情信息
refresh_times 			指定列表页的定时刷新
list_export 			控制列表页导出数据的可选格式
show_bookmarks 			控制是否显示书签功能
data_charts 			控制显示图标的样式
model_icon 			控制菜单的图标

四、xadmin 其他功能扩展

  1. 更改默认顶部菜单和底部菜单显示内容 和左侧菜单折叠
# 在admin.py 里新增以下代码
from xadmin import views
class GlobalSetting(object):
    # 设置后台顶部标题
    site_title ='xxx管理后台'
    # 设置后台底部标题
    site_footer ='xxx公司'
    # 设置左侧菜单折叠
    menu_style = "accordion"

# 注册到后台
xadmin.site.register(views.CommAdminView, GlobalSetting)

重启程序就能看到我们更改的显示内容啦

2. 开启xadmin主题切换 (默认是不开启的)

# 在admin.py 里新增代码
class BaseSetting(object):
    # 启用主题管理器
    enable_themes =True
    # 使用主题
    use_bootswatch =True

# 注册主题设置
xadmin.site.register(views.BaseAdminView, BaseSetting)

重启程序就能看到切换主题的按钮了

五、常见问题

Q: xadmin 后台不显示中文

解决

修改settings文件中的 LANGUAGE_CODE = 'zh-hans',

TIME_ZONE ='Asia/Shanghai'

保存之后刷新界面,可以看到已显示中文了。

Q: 自己注册的模型显示的是表名

解决:

创建Models模型时自定义后台菜单

class Order(models.Model):
    order_id = models.CharField(max_length=64, null=False, verbose_name="订单号")
    mobile = models.CharField(max_length=11, null=False, verbose_name="取件人手机号")
    class Meta:
        db_table ='Order'
        # 定义后台菜单显示内容
        verbose_name ="学生"
        verbose_name_plural = verbose_name
    def __str__(self):
        return self.name
# 创建字段的时候 定义 verbose_name为想展示的字段名
# 在Meta函数内定义菜单名

持续更新中...

                                                    ~~ Over ~~~~