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日

相关文章

  • Nginx 简单的负载均衡配置示例

    下面是详细的攻略。 什么是负载均衡 先来了解一下什么是负载均衡。负载均衡是将请求分配到多个服务器上,用以分担单个服务器的压力,提高系统的性能和可靠性。 Nginx 负载均衡的配置 首先安装 Nginx bash sudo apt update sudo apt install nginx 编辑 Nginx 配置文件 bash sudo nano /etc/n…

    人工智能概览 2023年5月25日
    00
  • 完美处理python与anaconda环境变量的冲突问题

    针对这个问题,我会提供一份完整的攻略。 1. 什么是环境变量? 在深入讲解这个问题之前,我们首先需要了解一下什么是“环境变量”。环境变量可以理解为是全局变量,可以在不同的程序中被调用。在操作系统中,每个进程都有自己的一组环境变量。 在Windows系统中,我们可以通过“控制台 > 系统和安全 > 系统 > 高级系统设置 > 环境变量”…

    人工智能概览 2023年5月25日
    00
  • Django restful framework生成API文档过程详解

    我来为您讲述一下“Django restful framework生成API文档过程详解”的完整攻略。 1. 安装Django Rest Framework 在开始前,首先需要安装Django Rest Framework。可以在终端中运行以下命令安装: pip install djangorestframework 2. 添加Django Rest Fra…

    人工智能概论 2023年5月25日
    00
  • Django def clean()函数对表单中的数据进行验证操作

    Django中的表单验证是在视图函数中使用的,在视图函数中,使用表单的is_valid()方法进行验证,但是有时候我们需要在表单类中对用户提交的数据进行进一步的自定义验证操作,这时候就需要使用到clean()函数。 clean()函数介绍 clean()函数是在django中的表单验证过程中定义的一个函数,可以对用户提交的数据进行自定义验证操作。clean(…

    人工智能概论 2023年5月25日
    00
  • Spring Cloud Ribbon实现客户端负载均衡的示例

    下面是“Spring Cloud Ribbon实现客户端负载均衡的示例”的完整攻略。 一、什么是Spring Cloud Ribbon Spring Cloud Ribbon是Netflix Ribbon的一个集成,通过使用Spring Cloud的注解和Spring Cloud的默认配置,可以方便地实现客户端负载均衡。 二、Spring Cloud Rib…

    人工智能概览 2023年5月25日
    00
  • 解析springcloud中的Hystrix

    解析Spring Cloud中的Hystrix 简介 Hystrix是Netflix公司开发的一种用于处理分布式系统的延迟和容错的库。它实现了断路器模式,通过添加延迟阈值、容错和回退机制来增加系统的鲁棒性。在Spring Cloud中使用Hystrix,我们可以轻松地实现断路器模式。本文将介绍如何在Spring Cloud中使用Hystrix。 Hystri…

    人工智能概览 2023年5月25日
    00
  • Python中暂存上传图片的方法

    下面是详细讲解Python中暂存上传图片的方法的完整攻略。 1. 前提条件 在进行任何操作之前,需要确保你已经安装了Python并且熟悉了基本的Python语法和操作。 2. 为什么要暂存上传图片? 在进行图片上传过程中,有些情况下需要对图片进行暂存处理,比如:- 验证图片是否符合规定要求- 对图片进行压缩处理- 将图片拆分成多个部分进行上传 3. Pyth…

    人工智能概论 2023年5月25日
    00
  • Java使用OCR技术识别验证码实现自动化登陆方法

    下面我将为您详细讲解“Java使用OCR技术识别验证码实现自动化登陆方法”的完整攻略。 一、什么是OCR技术? OCR(Optical Character Recognition),即光学字符识别,是一种图像识别技术。通过OCR技术,可以将一张含有字符的图片转换成计算机可识别的文本。 二、Java中的OCR技术库 Java中提供的OCR技术库主要是tesse…

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