Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
作者:让我在雪地上撒点野 发布时间:2021-01-07 20:38:33
Django自带有个强大的后天管理系统,接下来我就给大家介绍一下x的admin一些强大的操作及后台美化。
首先给大家介绍一些xadmin的注册创建,首先下载官方xadmin插件包放到对应的第三方apps_extra文件夹中
接下来就是在setting中注册xadmin和crispy_forms到INSTALLED_APPS,接下来就是在我们的urls.py文件中配置路由
import xadmin
urlpatterns = [
"""
url(r'^xadmin/', xadmin.site.urls)
"""
]
接下来就是在操作控制台中输入命令创建超级管理员账号,命令是python manage.py createsupperuser
根据提示输入相应的账号,邮箱和用户名,记得在登录xadmin后台之前一定 迁移同步,将xadmin对应的表迁到mysql数据库中
接下来就是跑起我们的项目,在对应的url网址后面后面加入/xadmin,登录我们的管理后台。
接下就是在每个app中新建adminx文件,将应对的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'
"""
设置完成后我们就能在后台中看到相对应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()
接下来我们就run运行import_category文件,注只能运行一次,如果多次run,将多次添加数据库了。接下来就查看数据库中和后台中有我们导入的数据,下个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()
补充导入的文件中有的是图片,如果想让后台的图片显示出来,还需要接下来的配置,首先需在setting中配置如图
MEDIA_URL='/media/'
# 配置xadmin显示图片
MEDIA_ROOT=os.path.join(BASE_DIR,'media')
#将文件夹media加入到系统中
然后,在url中配置图片url,这两项配置完成后图片就能显示出来了
from Atigugushop.settings import MEDIA_ROOT
urlpatterns = [
url(r'^media/(?P<path>.*)$', serve, {"document_root": MEDIA_ROOT})
#图片路径
]
上面就是xadmin 后台的部分操作,django自带的xadmin后台确实很强大,用起来很方便。接下来还会继续补充django的一些操作知识。
来源:https://blog.csdn.net/weixin_42301462/article/details/81355441


猜你喜欢
- 使用python基于cartopy库绘制台风路径使用python 绘制西太平洋进入我国的台风路径,文件为.dat格式,内容如下所示:代码如下
- 选中需要操作的字符Ctrl + R 替换Ctrl + Shift + F 全局查找Ctrl + Shift + R 全局替换来源:http:
- 1、初识 errgroupWaitGroup 主要用于控制任务组下的并发子任务。它的具体做法就是,子任务 goroutine 执行前通过 A
- AutoGrad 是一个老少皆宜的 Python 梯度计算模块。对于初高中生而言,它可以用来轻易计算一条曲线在任意一个点上的斜率。对于大学生
- 前言大家应该都有所体会,随着硬件层面的发展,linux系统多核已经是普通趋势,而mysql是单进程多线程,所以先天上对多进程的利用不是很高,
- 转用一门新语言通常是一项大决策,尤其是当你的团队成员中只有一个使用过它时。今年 Stream 团队的主要编程语言从 Python 转向了 G
- 相信大家刚开始做都会遇到这个问题,在网上找了好多也不管用,都写的不全,在这里记录一下,希望对大家有所帮助一、配置Vue前端在config下i
- 最近写的资源策略管理,在ceilometer 中创建alarm时,name要求是不能重复的,所以在创建policy的时候,要对policy的
- 表示文字链接最清楚的方式是“蓝色文字+下划线”,这是在浏览器发展过程中形成的。这个问题大家都说过很多次了,我也曾经说过。然而,这样的规范却总
- 数组去重ES6提供了几种简洁的数组去重的方法,但该方法并不适合处理非基本类型的数组。对于基本类型的数组去重,可以使用... new Set(
- Django提供了翻页器。用Django的Paginator类实现一、views模块导入Paginator类实现数据分页ApiTest/ap
- 目录01 all or any02 dir03 列表(list)推导式04 pprint05 repr06 sh07 Type hints0
- 引言昨天把系分的项目又加了一点逻辑判断,比如已经下单的菜品不能减少,不能重复下单,应该先下单再支付等…弄完购物车的逻辑之后,发现一直没有管备
- 本文实例讲述了JS 事件机制。分享给大家供大家参考,具体如下:<html> <head>
- 实这本是说明一个问题 : 每个人在提高自己能力这件事情上, 需要持续不断地努力。以最典型的例子来看,只有通过学习,程序员才能保证不断进步。
- 根据SalesOrderID排序,取第16-18行这3条记录。方法一:(最常用的分页代码, top / not in)SELECT &nbs
- 本文研究的主要是pyqt5简介及安装方法介绍的有关内容,具体如下。pyqt5介绍pyqt5是一套Python绑定Digia QT5应用的框架
- 一、常量常量是一个简单值的标识符(名字)。如同其名称所暗示的,在脚本执行期间该值不能改变(除了所谓的魔术常量,它们其实不是常量)。常量默认为
- 1.介绍 现在的网站随着访问量的增加,单一服务器无法承担巨大的访问量,有没有什么方便快捷的方式解决这个问题呢,答案是”有”!比如建立服务器群
- MongoDB安装模块pip install pymongo连接数据库import pymongoclient = pymongo.Mong