Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式

下面我将详细讲解“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后台主题换成黑色主题

  1. 下载xadmin主题:https://github.com/jsspurs/xadmin-webssh-theme,此主题名称为webssh

  2. 解压到static路径下static/theme/webssh,并将解压后的themes文件夹下所有文件复制到xadmin主题路径下static/xadmin下

  3. 应用方式:

# settings.py文件
XADMIN_CONF = {
    # 菜单栏展开
    'site_title': 'My Site',
    'site_footer': 'Powered By Django Xadmin',
    'menu_style': 'accordion',
    # 使用xadmin后台主题
    # 'theme': 'default'  # 白色主题
    'theme': 'webssh'      # 黑色主题
}

示例2:在xadmin后台显示信息图标

  1. 下载fontawesome:https://fontawesome.com/v4.7.0/icons/,此图标为fa fa-info-circle

  2. 在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>
  1. 在需要引用图标的地方增加以下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技术站

(0)
上一篇 2023年5月25日
下一篇 2023年5月25日

相关文章

  • 检查mysql是否成功启动的方法(bat+bash)

    使用Windows操作系统,利用bat脚本检查MySQL是否成功启动的方法: 1.1 在文本编辑器中创建一个新文件,将以下代码复制并粘贴到该文件中: @echo off sc query MySQL >nul 2>nul if errorlevel 1060 echo MySQL is not running.& exit /b 1 ec…

    人工智能概览 2023年5月25日
    00
  • JAVA代码实现MongoDB动态条件之分页查询

    下面是详细讲解 “JAVA代码实现MongoDB动态条件之分页查询” 的完整攻略。 问题描述 MongoDB是一个文档数据库,它支持强大的查询功能。在实际应用中,我们常常需要对MongoDB进行分页查询,并且还需要支持动态查询条件,比如根据关键字或者是查询时间范围进行过滤。 解决方案 Java开发者可以通过集成Jongo库来操作MongoDB数据库,其中Jo…

    人工智能概论 2023年5月25日
    00
  • Python进阶之如何快速将变量插入有序数组

    首先,我们先介绍一下如何将一个变量插入有序数组中: 首先,找到变量应该插入的位置,可以使用二分查找减少查找次数,从而提高插入速度。 然后,在找到正确的插入位置后,将其余元素右移一位,并将新元素插入该位置。 下面是一个使用Python语言实现将变量插入有序数组的示例代码: def insert_to_sorted_array(arr, n): left, ri…

    人工智能概览 2023年5月25日
    00
  • mongodb出现id重复问题的简单解决办法

    下面是详细讲解“mongodb出现id重复问题的简单解决办法”的完整攻略。 问题描述 在使用 mongodb 进行数据存储时,我们通常都会在数据文档中添加一个 _id 字段作为唯一标识符。但是,在多个文档同时插入时,可能会出现 _id 重复的问题,这时需要解决。 解决方案 在 mongodb 中,我们可以通过以下方式来解决 _id 重复的问题。 方案一:使用…

    人工智能概论 2023年5月25日
    00
  • Ubuntu下Anaconda和Pycharm配置方法详解

    下面给出详细讲解“Ubuntu下Anaconda和Pycharm配置方法详解”的完整攻略。 安装Anaconda 要在Ubuntu系统中使用Anaconda,需要先安装Anaconda。 下载安装包 在官网上下载对应系统的Anaconda的安装包。 安装 打开终端,使用以下命令安装Anaconda。 bash anaconda***.sh ***代表安装包版…

    人工智能概览 2023年5月25日
    00
  • nginx,apache的alias和认证功能

    下面我将详细讲解 nginx 和 apache 的 alias 和认证功能的完整攻略。 nginx 的 alias 概述 alias 是 nginx 中的一个指令,作用是将 URI 中的一部分替换为另一路径。它的语法格式如下: location /path/ { alias /path/to/folder/; } 其中 /path/ 是代表了该位置的 URL…

    人工智能概览 2023年5月25日
    00
  • python实现skywalking的trace模块过滤和报警(实例代码)

    下面为大家详细讲解如何实现Python的Skywalking Trace模块的过滤和报警,并提供两条示例说明。 什么是Skywalking Trace模块 Skywalking是由Apache基金会发布的一款开源APM(应用程序性能管理)系统,用于帮助我们深入了解和优化分布式系统。Trace模块是Skywalking中的核心模块,用于跨越各种分布式环境,从应…

    人工智能概论 2023年5月25日
    00
  • pytorch Dropout过拟合的操作

    下面是关于PyTorch Dropout过拟合的操作的完整攻略: 什么是过拟合? 在机器学习领域,过拟合(overfitting)指的是我们训练好的模型在测试集上表现不佳的现象,即模型过多地学习了训练集的一些噪声和细节,导致在没有见过的数据上表现较差。这是由于过拟合的模型过于复杂,过度拟合了训练集,无法泛化到未见过的数据上。 Dropout机制 为了防止过拟…

    人工智能概论 2023年5月25日
    00
合作推广
合作推广
分享本页
返回顶部