如何在 Django 中使用 pyecharts

为项目新建一个目录,将其命名为django_pyecharts_demo,
在终端中切换到这个目录,并创建一个虚拟环境。

python -m venv django_pyecharts

激活虚拟环境

django_pyecharts\Scripts\activate

要停止使用虚拟环境,可执行命令

deactivate

创建并激活虚拟环境后,就可安装Django

(django_pyecharts)learning_log$ pip install Django pyecharts

Django仅在虚拟环境处于活动状态时才可用。
查看已安装的python库,pip list。

(django_pyecharts) PS E:\python_work\Django\django_pyecharts> pip list
Package             Version
------------------- -------
asgiref             3.8.1
Django              5.0.3
djangorestframework 3.15.1
Jinja2              3.1.3
MarkupSafe          2.1.5
pip                 22.3
prettytable         3.10.0
pyecharts           2.0.5
setuptools          65.5.0
simplejson          3.19.2
sqlparse            0.4.4
tzdata              2024.1
wcwidth             0.2.13

新建一个项目

django-admin startproject pyecharts_django_demo .

千万别忘了这个句点,否则部署应用程序时将遭遇一些配置问题。如果忘记了这个句点,要删除已创建的文件和文件夹(django_pyecharts除外),再重新运行这个命令。
Django将大部分与项目相关的信息存储在数据库中,因此需要创建一个供Django使用的数据库。

python manage.py migrate

核实Django是否正确地创建了项目。为此,可执行命令runserver。

python manage.py runserver

显示

Starting development server at http://127.0.0.1:8000/

等同

http://localhost:8000/

若要关闭这个服务器,可切换到执行命令runserver 时所在的终端窗口,再按Ctrl + C即可。
如果出现错误消息That port is already in use(指定端口被占用),请执行命令

python manage.py runserver 8001

让Diango使用另一个端口。
在前面打开的终端窗口中应该还运行着runserver。
请再打开一个终端窗口(或标签页),并切换到manage.py所在的目录。激活该虚拟环境,

django_pyecharts\Scripts\activate

再执行命令startapp:

python manage.py startapp demo

在 pyecharts_django_demo/settings.py 中注册应用程序。

# pyecharts_django_demo/settings.py
INSTALLED_APPS = ['demo','django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',
]

编辑 demo/urls.py 文件

# demo/urls.py
from django.urls import include
from django.urls import re_path as url
from . import viewsurlpatterns = [url(r'^$', views.index, name='index'),
]

在 pyecharts_django_demo/urls.py 中新增 ‘demo.urls’

from django.contrib import admin
from django.urls import path
from django.urls import include
from django.urls import re_path as urlurlpatterns = [path('admin/', admin.site.urls),url(r'^demo/', include('demo.urls'))

Step 1: 拷贝 pyecharts 模板
先在 demo 文件夹下新建 templates 文件夹,
将 pyecharts 模板,位于 pyecharts.render.templates 拷贝至刚新建的 templates 文件夹,

Step 2: 渲染图表
将下列代码保存到 demo/views.py 中。

from jinja2 import Environment, FileSystemLoader
from pyecharts.globals import CurrentConfig
from django.http import HttpResponseCurrentConfig.GLOBAL_ENV = Environment(loader=FileSystemLoader("./demo/templates"))from pyecharts import options as opts
from pyecharts.charts import Bardef index(request):c = (Bar().add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]).add_yaxis("商家A", [5, 20, 36, 10, 75, 90]).add_yaxis("商家B", [15, 25, 16, 55, 48, 8]).set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题")))return HttpResponse(c.render_embed())

Step 3: 运行项目

python manage.py runserver

使用浏览器打开 http://127.0.0.1:8000/demo 即可访问服务
在这里插入图片描述
Django 前后端分离
Step 0: 建立文件夹、虚拟环境等,前几步同上。
Step 1: 新建一个 Django 项目

django-admin startproject pyecharts_django_demo .
python manage.py migrate
python manage.py startapp demo

在 pyecharts_django_demo/settings.py 中注册应用程序

# pyecharts_django_demo/settings.py
INSTALLED_APPS = ['demo',  # <--- app 名称'rest_framework','django.contrib.admin','django.contrib.auth','django.contrib.contenttypes','django.contrib.sessions','django.contrib.messages','django.contrib.staticfiles',
]

在 pyecharts_django_demo/urls.py 中新增 ‘demo.urls’

# pyecharts_django_demo/urls.py 
from django.contrib import admin
from django.urls import path
from django.urls import include
from django.urls import re_path as urlurlpatterns = [path('admin/', admin.site.urls),url(r'^demo/', include('demo.urls'))
]

编辑 demo/urls.py 文件(没有就新建一个)

from django.urls import include
from django.urls import re_path as url
from . import viewsurlpatterns = [url(r'^bar/$', views.ChartView.as_view(), name='demo'),url(r'^index/$', views.IndexView.as_view(), name='demo'),
]

Step 2 编写画图 HTML 代码
先在根目录文件夹下新建 templates 文件夹,新建一个 index.html

(django_pyecharts) PS E:\python_work\Django\django_pyecharts_demo> ls目录: E:\python_work\Django\django_pyecharts_demoMode                 LastWriteTime         Length Name
----                 -------------         ------ ----
d-----         2024/3/24     14:08                demo
d-----         2024/3/24      9:43                django_pyecharts
d-----         2024/3/24     14:06                pyecharts_django_demo
d-----         2024/3/24      9:53                templates
-a----         2024/3/24      9:45         131072 db.sqlite3
-a----         2024/3/24      9:45            699 manage.py

index.html

<!DOCTYPE html>
<html>
<head><meta charset="UTF-8"><title>Awesome-pyecharts</title><script src="https://cdn.bootcss.com/jquery/3.0.0/jquery.min.js"></script><script type="text/javascript" src="https://assets.pyecharts.org/assets/echarts.min.js"></script></head>
<body><div id="bar" style="width:1000px; height:600px;"></div><script>var chart = echarts.init(document.getElementById('bar'), 'white', {renderer: 'canvas'});$(function () {fetchData(chart);});function fetchData() {$.ajax({type: "GET",url: "http://127.0.0.1:8000/demo/bar",dataType: 'json',success: function (result) {chart.setOption(result.data);}});}</script>
</body>
</html>

Step 3: 编写 Django 和 pyecharts 代码渲染图表

注: 目前由于 json 数据类型的问题,无法将 pyecharts 中的 JSCode 类型的数据转换成 json 数据格式返回到前端页面中使用。因此在使用前后端分离的情况下尽量避免使用 JSCode 进行画图。

将下列代码保存到 demo/views.py 中

from django.shortcuts import render# Create your views here.
import json
from random import randrangefrom django.http import HttpResponse
from rest_framework.views import APIViewfrom pyecharts.charts import Bar
from pyecharts import options as opts# Create your views here.
def response_as_json(data):json_str = json.dumps(data)response = HttpResponse(json_str,content_type="application/json",)response["Access-Control-Allow-Origin"] = "*"return responsedef json_response(data, code=200):data = {"code": code,"msg": "success","data": data,}return response_as_json(data)def json_error(error_string="error", code=500, **kwargs):data = {"code": code,"msg": error_string,"data": {}}data.update(kwargs)return response_as_json(data)JsonResponse = json_response
JsonError = json_errordef bar_base() -> Bar:c = (Bar().add_xaxis(["衬衫", "羊毛衫", "雪纺衫", "裤子", "高跟鞋", "袜子"]).add_yaxis("商家A", [randrange(0, 100) for _ in range(6)]).add_yaxis("商家B", [randrange(0, 100) for _ in range(6)]).set_global_opts(title_opts=opts.TitleOpts(title="Bar-基本示例", subtitle="我是副标题")).dump_options_with_quotes())return cclass ChartView(APIView):def get(self, request, *args, **kwargs):return JsonResponse(json.loads(bar_base()))class IndexView(APIView):def get(self, request, *args, **kwargs):return HttpResponse(content=open("./templates/index.html").read())

Step 4: 运行项目

python manage.py runserver

使用浏览器打开 http://127.0.0.1:8000/demo/index 即可访问服务。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/767911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【string】查找最长的公共子序列(substr()/find())

实现一个算法查找两个字符串最长的公共子字符串。子字符串的介绍如下&#xff1a; 子字符串是指字符串中任意个连续的字符组成的子序列 输出一行&#xff0c;为最长公共子序列。 分析&#xff1a;使用substr()与find&#xff08;&#xff09;函数 if(str2.find(temp)!string…

【论文精读】MAE:Masked Autoencoders Are Scalable Vision Learners 带掩码的自动编码器是可扩展的视觉学习器

系列文章目录 【论文精读】Transformer&#xff1a;Attention Is All You Need 【论文精读】BERT&#xff1a;Pre-training of Deep Bidirectional Transformers for Language Understanding 【论文精读】VIT&#xff1a;vision transformer论文 文章目录 系列文章目录一、前言…

24. UE5 RPG制作属性面板(二)

在上一篇中&#xff0c;我们创建属性面板的大部分样式&#xff0c;这一篇里面接着制作。 在这一篇里我们需要有以下几个方面&#xff1a; 在界面增加一个属性按钮。属性按钮增加事件&#xff0c;点击时可以打开属性面板&#xff0c;属性面板打开时无法再次点击按钮。点击属性面…

01背包问题dp

01背包 有 N 件物品和一个容量是 V 的背包。每件物品只能使用一次。 第 i件物品的体积是 vi&#xff0c;价值是 wi。 求解将哪些物品装入背包&#xff0c;可使这些物品的总体积不超过背包容量&#xff0c;且总价值最大。 输出最大价值。 输入格式 第一行两个整数&#xff0c;N…

手撕算法-无重复字符的最长子串

描述 分析 滑动窗口&#xff0c;记录窗口中的所有出现的字符&#xff0c;然后窗口左边界固定&#xff0c;右边界右滑&#xff0c;如果&#xff0c;窗口中不存在新的字符&#xff0c;则右滑成功&#xff0c;否则左边界右滑&#xff0c;直到窗口中不存在右边界的值。 描述感觉不…

优化大型语言模型表现的策略与方法

在人工智能的世界里&#xff0c;大型语言模型如同 GPT-4 这样的存在&#xff0c;已经成为了一个璀璨的明星。这些模型的强大之处在于它们能够处理各种语言任务&#xff0c;比如写作、翻译和提问等。但是&#xff0c;想要让这些模型发挥出最大的作用&#xff0c;我们需要掌握一些…

登山小分队(dfs,模拟)

原题链接&#xff1a; 题目描述 Foxity和他的好友们相约去爬山&#xff0c;但是他们每个人都来到了不同的山脚下。整个山的结构类似一棵 "树"&#xff0c;有很多的观光节点通过一条条山道连接起来。 在图论中&#xff0c;树是一种无向图&#xff0c;其中任意两个顶…

Centos7 防火墙iptables?

Centos7 防火墙iptables&#xff1f; 文章目录 Centos7 防火墙iptables&#xff1f;1. 介绍2. firewalld 和 iptables区别3. 区域管理概念区域管理有如下几种不同的初始化区域&#xff1a; 4.iptables的配置1.简述2.基本原理3.iptables传输数据包的过程4. iptables规则表和链5.…

Flink CDC 1.18.1 Oracle 数据同步到postgresql

1、下载flink-1.18.1-bin-scala_2.12.tgz&#xff0c;linux通过&#xff1a; wget https://archive.apache.org/dist/flink/flink-1.18.1/flink-1.18.1-bin-scala_2.12.tgz 2、oracle11g客户端安装&#xff0c;下载&#xff1a; instantclient-basic-linux.x64-11.2.0.4.0.zi…

(65)整数的各位积和之差(66)统计一致字符串的数目

文章目录 1. 每日一言2. 题目&#xff08;65&#xff09;整数的各位积和之差3. 解题思路4. 代码5. 题目&#xff08;66&#xff09;统计一致字符串的数目6. 解题思路7. 代码8. 结语 1. 每日一言 无论你对此生的决定为何&#xff0c;一定要真诚地对待自己。 —《卧虎藏龙》- 2.…

结构体类型详细讲解(附带枚举,联合)

前言&#xff1a; 如果你还对结构体不是很了解&#xff0c;那么本篇文章将会从 为什么存在结构体&#xff0c;结构体的优点&#xff0c;结构体的定义&#xff0c;结构体的使用与结构体的大小依次介绍&#xff0c;同样会附带枚举与联合体 目录 为什么存在结构体&#xff1a; 结构…

【Linux 驱动基础】IMX6ULL LED基础驱动

本机使用的是正点原子的IMX6ULL开发板 # 前置知识 IMX6ULL GPIO控制框图&#xff1a; GPIO控制代码大概分为几个流程&#xff1a;开启时钟、设置IO复用、设置IO属性、配置IO方向、设置IO输出电平&#xff0c;下面以IMX6ULL为例&#xff0c; 1. 开启时钟 参考资料&#xff1a…

C 语言的关键字 static 和 C++ 的关键字 static 有什么区别 / C++中,a和a有什么区别?

一、C 语言的关键字 static 和 C 的关键字 static 有什么区别 C语言和C中的关键字static在用法和语义上有一些相似之处&#xff0c;但也存在一些细微的差别。 在C语言中&#xff0c;static关键字主要用于以下三个方面&#xff1a; 修饰全局变量或函数&#xff1a;使用static…

深入理解 Docker 镜像

1. Docker 镜像的底层原理 1.1 分层的镜像 以我们的pull 命令为例&#xff0c;在下载的过程中我们可以看到docker的镜像好像是一层一层的在下载。 1.2 UnionFS(联合文件系统) 联合文件系统是一种分层、轻量级并且高性能的文件系统&#xff0c;它支持对文件系统的修改作为一次…

自学python指导教程

要系统地自学Python&#xff0c;可以按照以下步骤进行&#xff1a; 学习基础知识&#xff1a; 从Python的基础语法开始学习&#xff0c;如变量、数据类型、运算符等。理解Python中的控制流程&#xff0c;如条件语句和循环结构。学习函数的定义和使用。了解Python中常用的数据结…

MPI4.1文档翻译(持续更新)

本博客参考官方文档进行介绍&#xff0c;全网仅此一家进行中文翻译&#xff0c;走过路过不要错过。 官方网址&#xff1a;https://www.mpi-forum.org/ 参考文档&#xff1a;https://www.mpi-forum.org/docs/mpi-4.1/mpi41-report.pdf 引用官方4.1文档方法&#xff1a; manu…

2024最新华为OD机试试题库全 -【局域网中的服务器个数】- C卷

1. 🌈题目详情 1.1 ⚠️题目 在一个机房中,服务器的位置标识在 n*m 的整数矩阵网格中,1 表示单元格上有服务器,0 表示没有。如果两台服务器位于同一行或者同一列中紧邻的位置,则认为它们之间可以组成一个局域网。 请你统计机房中最大的局域网包含的服务器个数。 1.2 …

linux下使用迅雷的完美办法(网络版免费),其他下载工具

迅雷有自家服务器的支持&#xff0c;因此&#xff0c;其他下载器&#xff0c;可能难以匹敌 &#xff1f; linux下使用迅雷的完美办法&#xff08;免费&#xff09; https://blog.csdn.net/lqrensn/article/details/8853949 网络版 Linux下安装并使用迅雷 https://www.lxlin…

牛客题霸-SQL进阶篇(刷题记录一)

本文基于前段时间学习总结的 MySQL 相关的查询语法&#xff0c;在牛客网找了相应的 MySQL 题目进行练习&#xff0c;以便加强对于 MySQL 查询语法的理解和应用。 由于涉及到的数据库表较多&#xff0c;因此本文不再展示&#xff0c;只提供 MySQL 代码与示例输出。 部分题目因…

化工企业能源在线监测管理系统,智能节能助力生产

化工企业能源消耗量极大&#xff0c;其节能的空间也相对较大&#xff0c;所以需要控制能耗强度&#xff0c;保持更高的能源利用率。 化工企业能源消耗现状 1、能源管理方面 计量能源消耗时&#xff0c;计量器具存在问题&#xff0c;未能对能耗情况实施完全计量&#xff0c;有…