下面我将详细讲解“Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式”的完整攻略。
1. 导入json数据
1.1 准备数据
首先需要准备数据,将需要导入的数据以json格式保存。假设我们有一个名为book.json
的文件,该文件的内容如下所示:
[
{
"name": "The Great Gatsby",
"author": "F. Scott Fitzgerald",
"published_date": "1925-04-10",
"pages": 180
},
{
"name": "To Kill a Mockingbird",
"author": "Harper Lee",
"published_date": "1960-07-11",
"pages": 281
}
]
1.2 创建model
假设我们已经有一个名为Book
的model,用于保存书籍信息。我们需要为该model添加一个导入数据的方法:
class Book(models.Model):
name = models.CharField(max_length=100)
author = models.CharField(max_length=100)
published_date = models.DateField()
pages = models.PositiveIntegerField()
@staticmethod
def import_data(file_path):
with open(file_path, 'r') as f:
data = json.load(f)
for item in data:
book = Book(
name=item['name'],
author=item['author'],
published_date=item['published_date'],
pages=item['pages']
)
book.save()
1.3 创建admin
我们需要为Book
添加一个xadmin
的admin:
import xadmin
from .models import Book
class BookAdmin(object):
list_display = ['name', 'author', 'published_date', 'pages']
actions = ['import_from_json']
def import_from_json(self, request, queryset):
for obj in queryset:
obj.import_data('path/to/book.json')
import_from_json.short_description = '从json文件导入数据'
xadmin.site.register(Book, BookAdmin)
注意,在BookAdmin
中,我们为actions
添加了一个import_from_json
方法,并将其放在了book列表页的操作区。
1.4 导入数据
完成上述步骤后,我们就可以在book列表页中看到import_from_json
操作了。我们点击该操作,即可将book.json
中的数据导入到数据库中。
2. 显示信息图标和更改主题
2.1 安装静态文件
首先需要安装xadmin的静态文件。可以通过pip
安装或者将源码下载下来自己安装。
pip install xadmin
2.2 修改配置文件
我们需要在Django的settings.py文件中加入以下配置:
# xadmin 配置
INSTALLED_APPS = ['xadmin', 'crispy_forms'] #添加 'crispy_forms'AppName,否则后台换肤css样式会有冲突
XADMIN_CONF = {
# 菜单栏展开
'site_title': 'My Site',
'site_footer': 'Powered By Django Xadmin',
'menu_style': 'accordion',
}
2.3 添加主题皮肤
我们可以在xadmin的主题皮肤库找到自己喜欢的主题,将主题保存到本地。
2.4 替换静态文件
将下载的主题放入xadmin的静态文件夹下,同时将xadmin的css中的文件路径修改为我们刚才下载主题的路径。
<link rel="stylesheet" type="text/css" href="/static/xadmin/css/ui.css">
修改为:
<link rel="stylesheet" type="text/css" href="/static/theme/ui.css">
2.5 显示信息图标
我们可以使用fontawesome
为xadmin添加图标。在html文件中通过以下方式引入fontawesome:
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
然后在需要添加图标的地方增加以下内容:
<i class="fa fa-info-circle"></i> #以添加信息的图标为例
完成上述步骤后,我们就可以在xadmin后台看到自己喜欢的主题,同时也可以添加图标显示信息。
示例1:将xadmin后台主题换成黑色主题
-
下载xadmin主题:https://github.com/jsspurs/xadmin-webssh-theme,此主题名称为
webssh
-
解压到static路径下
static/theme/webssh
,并将解压后的themes文件夹下所有文件复制到xadmin主题路径下static/xadmin下 -
应用方式:
# settings.py文件
XADMIN_CONF = {
# 菜单栏展开
'site_title': 'My Site',
'site_footer': 'Powered By Django Xadmin',
'menu_style': 'accordion',
# 使用xadmin后台主题
# 'theme': 'default' # 白色主题
'theme': 'webssh' # 黑色主题
}
示例2:在xadmin后台显示信息图标
-
下载fontawesome:https://fontawesome.com/v4.7.0/icons/,此图标为
fa fa-info-circle
-
在html页面中引入fontawesome:
<head>
<meta charset="UTF-8">
<title>{{ site_title|default:_('Django site admin') }}</title>
<script src="https://code.jquery.com/jquery-3.3.1.min.js"></script>
<script src="/static/xadmin/vendor/xadmin/jquery-migrate-1.2.1.min.js"></script>
<link rel="icon" href="data:image/png;base64,iVBORw0KG...>
<!-- 引入fontawesome -->
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
{% load static %}
<!-- 引入自定义css文件 -->
<link rel="stylesheet" href="{% static 'xadmin/css/site-custom.css' %}">
<link rel="stylesheet" type="text/css" href="{% static 'xadmin/css/xadmin.css' %}">
</head>
- 在需要引用图标的地方增加以下html代码:
<span>
<a title="详情" href="javascript:void(0)" onclick="xadmin.open_iframe('View','/airdata/thresholddata/{{obj.id}}/view','500px','400px')" style="text-decoration:none">
<i class="fa fa-info-circle balck"></i>
</a>
</span>
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式 - Python技术站