如何在 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 views

urlpatterns = [
    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 url

urlpatterns = [
    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 HttpResponse

CurrentConfig.GLOBAL_ENV = Environment(loader=FileSystemLoader("./demo/templates"))

from pyecharts import options as opts
from pyecharts.charts import Bar


def 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 url

urlpatterns = [
    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 views

urlpatterns = [
    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_demo

Mode                 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 randrange

from django.http import HttpResponse
from rest_framework.views import APIView

from 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 response


def 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_error


def 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 c


class 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 即可访问服务。
在这里插入图片描述

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux V4L2 应用编程

V4L2&#xff1a;Video4Linux2&#xff0c;是 Linux 内核中的一个框架&#xff0c;提供了一套用于视频设备驱动程序开发的 API。它是一个开放的、通用的、模块化的视频设备驱动程序框架&#xff0c;允许 Linux 操作系统和应用程序与各种视频设备&#xff08;如摄像头、视频采集…

Spring-声明式事务实例(有详细注释)

前提知识 Spring-IOC容器注解方式使用https://blog.csdn.net/m0_61160520/article/details/136784799?spm1001.2014.3001.5501切点表达式https://blog.csdn.net/m0_61160520/article/details/136782885?spm1001.2014.3001.5501 案例 1.创建项目 2.导入依赖 <dependen…

003、Dynamo Python创建楼板

今天我们来创建一块楼板&#xff0c;仍然是找Dynamo里有的节点&#xff0c;可以对照参考练习。 首先&#xff0c;我们打开API手册&#xff0c;在索引里搜索Floor&#xff0c;发现在Floor的方法里&#xff0c;没有找到创建楼板的方法&#xff0c;于是在搜索栏搜索&#xff0c…

python(django(自动化))之流程接口展示功能前端开发

1、创建模板代码如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><title>测试平台</title> </head> <body role"document"> <nav class "navbar n…

电脑如何关闭自启动应用?cmd一招解决问题

很多小伙伴说电脑刚开机就卡的和定格动画似的&#xff0c;cmd一招解决问题&#xff1a; CtrlR打开cmd,输入&#xff1a;msconfig 进入到这个界面&#xff1a; 点击启动&#xff1a; 打开任务管理器&#xff0c;禁用不要的自启动应用就ok了

LangChain核心模块 Retrieval——文本嵌入模型、Vector stores

Text embedding models 文本嵌入模型 检索的另一个关键部分是为文档创建嵌入。 Embeddings 类是设计用于与文本嵌入模型交互的类。 Embeddings创建一段文本的矢量表示&#xff0c;这样我们就可以在向量空间中思考文本&#xff0c;并执行语义搜索之类的操作&#xff0c;在向…

详解库和程序运行过程

我最近开了几个专栏&#xff0c;诚信互三&#xff01; > |||《算法专栏》&#xff1a;&#xff1a;刷题教程来自网站《代码随想录》。||| > |||《C专栏》&#xff1a;&#xff1a;记录我学习C的经历&#xff0c;看完你一定会有收获。||| > |||《Linux专栏》&#xff1…

Websocket + Vue使用

这里有一篇文档可以参考一下> 闪现 POM文件 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-websocket</artifactId><version>2.7.0</version> </dependency> WebSocketConf…

IIS7/iis8/iis10安装II6兼容模块 以windows2022为例

因安全狗的提示 安全狗防护引|擎安装失败 可能原因是: IIS7及以上版本末安装1IS6兼容模块! .所以操作解决 如下. 在开始菜单中,找到服务器管理器.找到下图的IIS,右键添加角色和功能,找到web服务器的管理工具选项,iis6管理兼容性 打钩并安装. 如下图

力扣---最长回文子串---二维动态规划

二维动态规划思路&#xff1a; 首先&#xff0c;刚做完这道题&#xff1a;力扣---最长有效括号---动态规划&#xff0c;栈-CSDN博客&#xff0c;所以会有一种冲动&#xff0c;设立g[i]&#xff0c;表示以第i位为结尾的最长回文子串长度&#xff0c;然后再遍历一遍取最大长度即可…

Web前端-JS

JavaScript&#xff0c;简称js&#xff1a;负责网页的行为&#xff08;交互效果&#xff09;。是一门跨平台&#xff0c;面向对象的脚本语言&#xff08;编写出来的语言不需要编译&#xff0c;通过浏览器的解释就可以运行&#xff09; JS引入方式 1.内嵌样式 这样打开页面就会…

【CVPR2024】CricaVPR

【CVPR2024】CricaVPR: Cross-image Correlation-aware Representation Learning for Visual Place Recognition 这个论文提出了一种具有跨图像相关性的鲁棒全局表示方法用于视觉位置识别&#xff08;VPR&#xff0c;Visual Place Recognition &#xff09;任务&#xff0c;命…

Linux系统——iptables超细致解释

目录 内核如何处理数据包流程图 一、表 二、链 三、表、链、规则的关系 四、数据报文进/出节点经过哪些规则 五、NAT——网络地址转换 1.SNAT 2.DNAT 内核如何处理数据包流程图 规则是管理员对数据包制定的一种触发机制&#xff0c;即当数据包达到某种条件&#xff0c;…

【Linux杂货铺】进程控制

目录 &#x1f308;前言&#x1f308; &#x1f4c1; 进程创建 &#x1f4c2; fork函数 &#x1f4c2; 写实拷贝 &#x1f4c2; 创建进程的目的 &#x1f4c2; 创建失败原因 &#x1f4c1; 进程终止 &#x1f4c2; 概念 &#x1f4c2; 场景 &#x1f4c2; 退出方法 …

欧几里得算法-----无聊的军官pro max版本

上篇文章末尾我们说学了欧几里得算法一定给大家更新。 今天它来了&#xff01; 欧几里得算法 欧几里得算法是一种求最小公倍数和最大公因数的算法。 我们看图&#xff1a; 我们把两个数看成长方形&#xff0c;在长方形内不断划分出小正方形&#xff0c;PS&#xff1a;第一个…

一图理解递归-算法通关村

一图理解递归-算法通关村 递归是我们算法进阶的基础&#xff0c;是必须要掌握的内容&#xff0c;只有掌握了递归才算真的会算法。与递归有关的问题有&#xff1a; 与树和二叉树相关的大部问题二分查找相关的问题快速排序、归并排序相关的问题所有回溯的问题所有动态规划的问题 …

scrapy爬虫框架

scrapy爬虫框架 一、scrapy的概念作用和工作流程1、scrapy的概念2、scrapy框架的作用3、scrapy的工作流程&#xff08;重点&#xff09;3.1 回顾之前的爬虫流程3.2 改写上述流程3.3 scrapy的流程3.4 scrapy的三个内置对象3.5 scrapy中每个模块的具体作用 二、scrapy的入门使用1…

【机器学习】无监督学习算法之:主成分分析

主成分分析 1、引言2、主成分分析2.1 定义2.2 原理2.3 实现方式2.4 算法公式2.5 代码示例 3、总结 1、引言 小屌丝&#xff1a;鱼哥&#xff0c; 快&#xff0c;快。 小鱼&#xff1a;… 啥情况&#xff0c; 你可别乱喊。 小屌丝&#xff1a;额… 我的意思&#xff0c;是你该继…

【附订阅OnlyFans攻略】2024年AI:一个交织着创新与挑战的故事

2024年AI&#xff1a;一个交织着创新与挑战的故事 在2024年的一个清晨&#xff0c;阳光透过智能窗户的调节&#xff0c;柔和地洒在书房里。李华&#xff0c;一位年轻的科技创业者&#xff0c;坐在书桌前&#xff0c;凝视着电脑屏幕上不断跳动的数据和图像。他正在进行一项重要…

Flutter 项目架构技术指南

Flutter 项目架构技术指南 视频 https://www.bilibili.com/video/BV1rx4y127kN/ 前言 原文 https://ducafecat.com/blog/flutter-clean-architecture-guide 探讨Flutter项目代码组织架构的关键方面和建议。了解设计原则SOLID、Clean Architecture&#xff0c;以及架构模式MVC…