Django-xadmin后台导入JSON数据及图标主题配置详解
本文详细介绍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数据及后台显示信息图标和主题更改方式的分享到此结束,希望能对大家有所帮助,也希望大家多多支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













