Django-xadmin后台导入JSON数据及图标主题配置详解

阿橙
阿橙
发布时间:2026-10-13 | 5人浏览过
原创

本文详细介绍Django xadmin后台的高级配置方法,包括注册xadmin、创建超级管理员及迁移数据库。重点讲解如何自定义后台名称、更换主题颜色以及通过Font Awesome设置模块图标。此外,还提供通过Python脚本批量导入JSON格式商品及分类数据的完整代码示例,并配置静态资源以在后台正确显示图片。

Django内置了功能强大的后台管理系统,本文将深入介绍xadmin插件的高级操作技巧及后台界面美化方案。

xadmin安装与基础配置

首先介绍xadmin的注册与创建流程。需下载官方提供的xadmin插件包,并将其放置于项目对应的第三方apps_extra文件夹中。

随后在settings配置文件中,将xadmin和crispy_forms添加到INSTALLED_APPS列表中。接着,在urls.py文件中配置相应的路由规则。


import xadmin
 
urlpatterns = [
"""
  url(r'^xadmin/', xadmin.site.urls)
"""
]

在操作控制台中执行命令python manage.py createsuperuser以创建超级管理员账号。

根据提示输入相应的账号、邮箱和用户名。务必在登录xadmin后台之前执行迁移同步操作,将xadmin相关的表结构迁移至MySQL数据库中。

启动项目后,在访问网址后追加/xadmin路径,即可登录管理后台。

在每个app目录下新建adminx.py文件,将对应的models注册到xadmin中。


import xadmin
from .models import Goods
class GoodCategoryBrandAdmin(object):
  fields=['category','name','image','desc','add_time']
#详情页字段的顺序及是否显示配置,不写的话默认显示全部字段
  list_display=['name','desc','add_time']
#列表显示字段的配置
  search_fileds=['name']
#搜索框搜索内容配置
  list_per_page=10
#列表显示分页的配置,每页显示数据多少
  list_filter=['name']
#过滤器配置
  
xadmin.site.register(Goods,GoodCategoryBrandAdmin)
#将Goods注册到xadmin后台

将app中各个models类逐一注册到xadmin后台,下图展示了全部注册完成后的显示效果。

后台名称与导航栏自定义

默认后台名称为django_xadmin,用户通常希望将其替换为自定义的后台名称。接下来介绍如何替换后台名称、标注以及配置导航栏的伸缩效果。


from xadmin import views
class GlobalSettings(object):
  site_title = "硅谷商城后台管理系统"
  # 系统名称
  site_footer = "版权所有@硅谷商城"
  # 底部版权栏
  menu_style = "accordion"
  # 将菜单栏收起来
xadmin.site.register(views.CommAdminView,GlobalSettings)

将相关代码写入任意一个app中的adminx.py文件,即可生效显示自定义效果。

后台主题与图标设置

django-xadmin支持后台主题的更换,设置过程十分简单。若希望将默认的灰黑色背景替换为蓝色或绿色等主题色,

只需执行以下步骤操作。


class BaseSetting(object):
设置主题功能
  enable_themes = True
  use_bootswatch = True
 
xadmin.site.register(views.BaseAdminView, BaseSetting)

完成上述配置后,即可修改xadmin后台主题。初始各功能模块默认显示为小圆圈图标,我们可以通过font-awesome库设置所需的自定义功能模块图标,下图展示了设置完成后的各功能模块图标效果。

首先定位到设置图片的代码位置,

model_icon = 'fa fa-picture-o'

这段用于注册后台图标的代码位于如下所示的位置,如图所示。

接下来,通过访问http://www.fontawesome.com.cn/网站查找心仪的图标,该网站图标库非常全面,以下为部分官网图标截图。

若需添加最新版的图标,可从官网下载最新文件,将下载文件中的css和font文件夹拷贝至或替换到下图中标注红色区域的文件夹中。

随后,将model_icon = 'fa fa-picture-o'中的值替换为下图中标注红色部分的CSS样式类名。

将model_icon = 'fa fa-address-card'添加到相应adminx.py文件中对应的类定义内。


class GoodCategoryBrandAdmin(object):
"""
  model_icon = 'fa fa-address-card' 
"""

JSON数据批量导入与图片显示配置

设置完成后,后台中对应model的图标即可显示。若需导入第三方提供的数据或预先编写好的测试json格式数据,可通过以下方式整体导入。首先将原始数据拷贝至对应的文件夹下。

接着,在与data同级目录下创建import_category.py文件,并在该py文件中编写导入函数。


import os
import sys
#导入包
filename=os.path.realpath(__file__)
#对应文件的名字
dirname=os.path.dirname(filename)
#对应文件夹的名字
sys.path.insert(0,dirname)
#将文件夹插入
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Atigugushop.settings")
import django
django.setup()
from db_utils.data.category_data import row_data
#导入原始数据
from goods.models import GoodsCategory
#导入models中的类
for item in row_data:
#便利数据
  instanc1=GoodsCategory()
#实例化类
  instanc1.name=item['name']
#将遍历的数据添加到models中的字段中
  instanc1.code=item['code']
  instanc1.category_type=1
#标注类别为一级目录
  instanc1.save()
#将数据保存数据库
 
  for item2 in item['sub_categorys']:
    instanc2 = GoodsCategory()
    instanc2.name = item2['name']
    instanc2.code = item2['code']
    # 指向父级目录
    instanc2.parent_category=instanc1
    instanc2.category_type=2
    instanc2.save()
    for item3 in item2['sub_categorys']:
      instanc3 = GoodsCategory()
      instanc3.name = item3['name']
      instanc3.code = item3['code']
      instanc3.parent_category = instanc2
      instanc3.category_type=3
      instanc3.save()

随后运行import_category文件。注意:该脚本只能运行一次,若多次运行会导致数据重复添加到数据库中。运行后查看数据库及后台,确认已导入数据。import_product的导入操作与上图类似,以下是相关代码部分。


import os
import sys
filename=os.path.realpath(__file__)
dirname=os.path.dirname(filename)
sys.path.insert(0,dirname)
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "Atigugushop.settings")
import django
django.setup()
from db_utils.data.product_data import row_data
from goods.models import Goods,GoodsCategory,GoodsImage,GoodCategoryBrand
for item in row_data:
  goods=Goods()
  goods.market_price=float(item['market_price'].replace('元','').replace('¥',''))
  goods.shop_price=float(item['sale_price'].replace('元','').replace('¥',''))
  goods.name=item['name'] if item['name'] is not None else ''
  goods.goods_desc=item['goods_desc'] if item['goods_desc'] is not None else ''
  goods.goods_brief=item['desc'] if item['desc'] is not None else ''
  category_name=item['categorys'][-1]
  categorys=GoodsCategory.objects.filter(name=category_name)
  if categorys:
    goods.category=categorys[0]
  goods.save()
  for image in item['images']:
    goods_image=GoodsImage()
    goods_image.image=image
    goods_image.goods=goods
    goods_image.save()

补充说明:导入的文件中若包含图片,为使后台能正确显示图片,还需进行以下配置。首先在settings中进行如图配置。


MEDIA_URL='/media/'
# 配置xadmin显示图片
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
#将文件夹media加入到系统中

然后,在urls.py中配置图片访问的url。完成这两项配置后,图片即可正常显示。


from Atigugushop.settings import MEDIA_ROOT
urlpatterns = [
  
  url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT})
  #图片路径
 
]

以上介绍了xadmin后台的部分操作,Django自带的xadmin后台功能确实强大且使用便捷。后续将继续补充Django的相关操作知识。

以上关于Django-xadmin后台导入JSON数据及后台显示信息图标和主题更改方式的分享到此结束,希望能对大家有所帮助,也希望大家多多支持本站。

相关标签:

本站声明

本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。

Python 相关产品和应用

全部下载

专题列表