文章首发公众号:早起python

前言

为什么将pyecharts与web框架结合使用?因为如果只是单纯的使用pyecharts,我们展示的时候只能将我们的图表生成为静态文件,虽然也在也可以使用iframe等语句嵌入前端页面但是并不方便前后端数据交互。

如果我们在Flask/Django/Tornado/Sanic中使用pyecharts就结合通过这些web框架来实现前后端分离或使用动态更新数据,增量更新数据(比如前端主动向后端进行数据刷新等)等功能。进一步可以购买一个服务器去将项目部署在服务器上,这样就能随时随地展示你的数据分析可视化结果而这一切并不困难。例如我们之前做过疫情可视化网站就是Django+pyecharts实现

本文主要介绍如何在本地结合Flask/Django使用pyecharts。

在Flask中使用

step1

新建一个flask项目

Flask的安装可以使用pip install flask首先我们建立一个文件夹pyecharts-flask-demo然后进入这个这个文件夹中再建一个新的文件夹templates这样我们就为我们接下来的flask项目创建了一个目录。

step2

拷贝pyecharts模版

将 pyecharts 模板,位于官方GitHub中的 pyecharts.render.templates 全部文件拷贝至刚新建的 templates 文件夹。

step3

渲染模版

在这一步我们只要在文件夹pyecharts-flask-demo也就是主目录下创建创建一个python脚本命名为server.py并填入以下代码,当然中间的绘图部分代码可以替换为自己的绘图部分代码

from flask import Flask
from jinja2 import Markup, Environment, FileSystemLoader
from pyecharts.globals import CurrentConfig# 关于 CurrentConfig,可参考 [基本使用-全局变量]
CurrentConfig.GLOBAL_ENV = Environment(loader=FileSystemLoader("./templates"))from pyecharts import options as opts
from pyecharts.charts import Barapp = Flask(__name__, static_folder="templates")#########################以下代码可以替换!!!
def bar_base() -> Bar: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 c
##########################################
@app.route("/")
def index():c = bar_base()return Markup(c.render_embed())if __name__ == "__main__":app.run()

此时你的目录应该是这样

step4

启动项目

最后一步就是启动项目,从命令行进入pyecharts-flask-demo文件夹并执行

python server.py

使用浏览器打开 http://127.0.0.1:5000 即可访问服务

此时我们就成功在Flask中使用pyecharts,不过以上操作仅将这个项目部署在本地,当然在服务器中的配置与启动方法完全一样。接下来我们可以利用Flask实现前后端分离或使用动态更新数据,增量更新数据(定时刷新的核心在于 HTML 的setInterval方法)等功能。而这些就交给大家自己探索或关注以后的文章。

在Django中使用

在Django中配置与使用比Flask稍微复杂一点,但是也并不困难!

step1

新建一个Django项目

Django的安装可以使用pip install Django

打开命令行执行下面代码创建一个Django项目目录

django-admin startproject pyecharts_django_demo

然后执行下面代码创建一个app

python manage.py startapp demo

此时我们的目录应该是这样

打开pyecharts_django_demo/settings.py修改下面部分代码来注册应用程序

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

再编辑demo/urls.py 文件(新建一个文件)

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

再修改pyecharts_django_demo/urls.py

#pyecharts_django_demo/urls.py
from django.conf.urls import include, url
from django.contrib import adminurlpatterns = [url(r'^admin/', admin.site.urls),url(r'demo/', include('demo.urls')) # <---
]

step2

拷贝pyecharts模版

先在 demo 文件夹下新建 templates 文件夹,然后将 pyecharts 模板,位于 pyecharts.render.templates 拷贝至刚新建的 templates 文件夹。此时我们的目录是这样

step3

渲染图表

将下列代码保存到 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())

step4

启动Django项目

在命令行进入主目录执行即可

python manage.py runserver

现在进入http://127.0.0.1:8000/demo

即可访问服务

接下来就可以结合Django实现前后端分离从而实现定时全量、增量更新图表比如前端主动向后端进行数据刷新等相关功能。

django前后端结合_简单4步用FLASK/Django部署你的Pyecharts项目相关推荐

  1. django前后端结合_一图看懂Django和DRF

    一个总结 Django和DRF用了很久了,一直没有认真的总结一下,没什么总结比一张框图更暴力了.最近根据使用经验画了几张图,下面这两张图分别是Django的框图和Django REST Framwor ...

  2. SpringCloud学习笔记018---SpringBoot前后端分离_集成_SpringSecurity_简单实现

    SpringBoot前后端分离_集成_SpringSecurity_简单实现 1.新建SpringBoot项目,可以使用idea,快速创建    file-create-project->选择w ...

  3. Django CSRF(什么是CSRF?)\Django前后端分离csrf token获取方式

    文章目录 Django CSRF 什么是CSRF? Django CSRF Django CSRF 中间件 Django,Ajax提交csrf_token处理 Django 设置 cookie 中的 ...

  4. springboot jwt token前后端分离_为什么要 前后端分离 ?

    作 者:互扯程序 来 源:互扯程序 广而告之:由于此订阅号换了个皮肤,系统自动取消了读者的公众号置顶.导致用户接受文章不及时.您可以打开订阅号,选择置顶(星标)公众号,重磅干货,第一时间送达! 本文知 ...

  5. Nginx+uwsgi+celery+supervisor部署Django前后端分离项目

    转载 Nginx+uwsgi+celery+supervisor部署Django前后端分离项目 ljmict 0人评论 3887人阅读 2018-08-08 01:29:45 本实验实现了负载均衡.反 ...

  6. Django前后端分离实现登录验证码功能

    Django前后端分离实现登录验证码功能 当下最流行最热门的开发方式当属前后端分离开发,分工也更加明确与专注,前端也是越来越难,几天不学习就跟不上节奏,一个月不学习可以好不夸张的说,你已经不适合这个行 ...

  7. springboot jwt token前后端分离_「转」七个开源的 Spring Boot 前后端分离项目,建议收藏加转载...

    其实前后端分离本身并不难,后段提供接口,前端做数据展示,关键是这种思想.很多人做惯了前后端不分的开发,在做前后端分离的时候,很容易带进来一些前后端不分时候的开发思路,结果做出来的产品不伦不类,因此松哥 ...

  8. 视频教程-Python+Vue+Django前后端分离项目实战-Python

    Python+Vue+Django前后端分离项目实战 教学风格独特,以学员视角出发设计课程,难易适度,重点突出,架构清晰,将实战经验融合到教学中.讲授技术同时传递方法.得到广大学员的高度认可. 王进 ...

  9. 视频教程-Angular+Django前后端分离实战项目开发教程-AngularJS

    Angular+Django前后端分离实战项目开发教程 胜蓝博创(韬略课堂)创始人,IT培训讲师,先后在蓝港在线,热酷,乐元素等大型游戏公司任职,参与过多款大型网游.手游的设计和开发,精通页游.手游前 ...

最新文章

  1. word2vec代码_Word2Vec-——gensim实战教程
  2. javascript引用类型
  3. xpool, cpool,epoo
  4. 对EditText右边的图片进行监听
  5. android广告平台的介绍
  6. 王荣刚:视频画质评定是个“大坑”
  7. 微软Azure云之企业Exchange 2016部署12—配置负载平衡
  8. SAP License:这种ERP系统核查工作实际是在做无用功
  9. python des加密文件_python基于pyDes库实现des加密的方法
  10. 清华大学刘云浩教授——人工智能打开了潘多拉的盒子吗?
  11. stm32固件库下载地址
  12. Chrome浏览器长截图
  13. 泰勒·斯威夫特(Taylor Swift)最好听歌曲专辑,喜欢的可以下载保存
  14. 华为手机fastboot解锁
  15. Qt实现Toast提示消息
  16. Asio tcp异步例子
  17. 厚积薄发 臻于至善,用友U9 cloud“王者归来”
  18. 2020手机音频解码芯片_2020杰理音频芯片全解析,14款音频产品代表作拆解汇总...
  19. win10 文件图标变白的解决方法
  20. Mac 下 Nginx、PHP、MySQL 和 PHP-fpm 的安装和配置

热门文章

  1. 什么是java四大引用?
  2. CSS样式规则-CSS结构的特点
  3. 2017 9月java答案_2017年9月计算机二级JAVA试题及答案
  4. java swing jar 字体不一样_终于读完了腾讯T4架构师整理的Java深度学习笔记
  5. for of 的用法区别_ES6语法:var、let、const的区别详解
  6. 宝塔ssl验证域名失败_申请一年期限的AlphaSSL泛域名证书 – 安装第三方证书
  7. mysql导入表格,txt操作(以及常见问题解决方法)
  8. Jupyter Notebook知识点
  9. OpenCASCADE绘制测试线束:布尔运算命令之设置选项的操作
  10. BOOST_LOG_UNIQUE_IDENTIFIER_NAME宏用法的测试程序