天天看點

簡單4步用FLASK/Django部署你的Pyecharts項目

前言

為什麼将pyecharts與web架構結合使用?

因為如果隻是單純的使用pyecharts,我們展示的時候隻能将我們的圖表生成為靜态檔案,雖然也在也可以使用iframe等語句嵌入前端頁面但是并不友善前後端資料互動。

如果我們在Flask/Django/Tornado/Sanic中使用pyecharts就結合通過這些web架構來實作前後端分離或使用動态更新資料,增量更新資料(比如前端主動向後端進行資料重新整理等)等功能。進一步可以購買一個伺服器去将項目部署在伺服器上,這樣就能随時随地展示你的資料分析可視化結果,而這一切并不困難。例如我們之前做過疫情可視化網站就是Django+pyecharts實作?

簡單4步用FLASK/Django部署你的Pyecharts項目

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

在Flask中使用

step1

建立一個flask項目

Flask的安裝可以使用pip install flask

首先我們建立一個檔案夾pyecharts-flask-demo然後進入這個這個檔案夾中再建一個新的檔案夾templates這樣我們就為我們接下來的flask項目建立了一個目錄。

簡單4步用FLASK/Django部署你的Pyecharts項目

step2

拷貝pyecharts模版

将 pyecharts 模闆,位于官方GitHub中的

pyecharts.render.templates

全部檔案拷貝至剛建立的 templates 檔案夾。

簡單4步用FLASK/Django部署你的Pyecharts項目

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 Bar

app = 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()           

複制

此時你的目錄應該是這樣

簡單4步用FLASK/Django部署你的Pyecharts項目

step4

啟動項目

最後一步就是啟動項目,從指令行進入pyecharts-flask-demo檔案夾并執行

python server.py           

複制

使用浏覽器打開 http://127.0.0.1:5000 即可通路服務

簡單4步用FLASK/Django部署你的Pyecharts項目

此時我們就成功在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           

複制

此時我們的目錄應該是這樣

簡單4步用FLASK/Django部署你的Pyecharts項目

打開

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 url

from . import views

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

urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'demo/', include('demo.urls')) # <---
]           

複制

step2

拷貝pyecharts模版

先在

demo

檔案夾下建立 templates 檔案夾,然後将 pyecharts 模闆,位于

pyecharts.render.templates

拷貝至剛建立的 templates 檔案夾。此時我們的目錄是這樣

簡單4步用FLASK/Django部署你的Pyecharts項目

step3

渲染圖表

将下列代碼儲存到

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())           

複制

step4

啟動Django項目

在指令行進入主目錄執行即可

python manage.py runserver           

複制

現在進入

http://127.0.0.1:8000/demo

即可通路服務

簡單4步用FLASK/Django部署你的Pyecharts項目

接下來就可以結合Django實作前後端分離進而實作

定時全量、增量更新圖表

比如前端主動向後端進行資料重新整理等相關功能。

THE END