1. 程式人生 > >【python可視化方案】pyecharts + Django 框架

【python可視化方案】pyecharts + Django 框架

iss 處理 解決 char -a 配置 template 使用 ubun

背景:基於對於可視化的巨大需求以及成本因素,利用pyecharts + Django 的可視化方式,顯然是一種比較優的選擇
通過可視化可尋找:模式、關系和異常

環境:強迫癥患者,歷來都是用最新版本
Django:2.1.0
python:3.x (win10是3.7,Ubuntu是3.5)
操作系統環境:win10與Ubuntu

1、Django安裝:
Django是利用python開發的免費開源的Web框架,可用於快速搭建網站
1.1、安裝Django
筆者喜歡采用pip安裝方式:
Win10:pip installl Django
Ubuntu:(sudo) pip install Django

1.2、檢驗是否安裝成功
進入python環境:

import django
django.VERSION
(2, 1, 0, ‘final’, 0)
如果能看見相應的版本號,則證明安裝成功。

2、新建一個項目
Ubuntu在終端輸入以下命令(Win10則在cmd操作)
django-admin startproject mysite #創建一個項目,名稱為mysite
註:如果 django-admin 不行,請用 django-admin.py
成功後可以看見如下目錄
技術分享圖片
新建了一個 mysite 目錄,其中還有一個 mysite 目錄,這個子目錄 mysite 中是一些項目的設置 settings.py 文件,總的urls配置文件 urls.py 以及部署服務器時用到的 wsgi.py 文件, init

.py 是python包的目錄結構必須的,與調用有關

3、新建一個應用(app),名稱learn
進入mysite目錄,而非mysite/mysite
python manage.py startapp learn # learn 是一個app的名稱
技術分享圖片
隨後在mysite目錄下多了一個learn文件夾

4、環境配置
4.1、修改 mysite/mysite/settings.py,如圖所示
技術分享圖片
此處是為了將learn文件(即新建的APP)夾加入Django環境,即註冊程序

4.2、替換learn/view.py,如圖所示
技術分享圖片
第一行:# coding:utf-8 是為了聲明編碼為utf-8
第二行:引入HttpResponse,是用來向網頁返回內容,就像Python中的print,只不過此處是把內容顯示到網頁上
關於自定義函數index(),此處第一個參數必須是request,與網頁發送來的請求有關,request變量裏面包含get或post的內容,用戶瀏覽器,系統等信息在裏面

現在環境等都搭建好了,網頁顯示內容也寫好了,但是如何訪問?
4.3、修改mysite/mysite/urls.py,新增部分內容
技術分享圖片
標記部分即為新增內容
from learn import views as learn_views:是為了引入learn文件夾中的views.py腳本
path(”, learn_views.index):說明輸入的只有IP與端口號(即http://127.0.0.1:8000/)時執行,views.py腳本
拓展:
若修改為如圖所示
技術分享圖片
則說明輸入如下內容,http://127.0.0.1:8000/add0/則執行views00.py腳本,這也就是所謂的接口方案

4.4、運行python manage.py runserver
若顯示如圖所示,則說明成功了
技術分享圖片
打開瀏覽器訪問:http://127.0.0.1:8000/
則會出現如下頁面(因為我現在已經將其部署到了服務器所以輸入的是其他內容,可忽略此處,後續會說明)
技術分享圖片

現在部署的僅提供本機訪問,接下來將如何實現部署到服務器上,供所有主機訪問
5、部署到服務器,供所有主機訪問
部署到服務器同部署到本地,前期的操作完全一致,可先參照前面步驟完成1-4步
但是部署到服務器還需要做以下工作
5.1、開通端口,這個需要自己開通,假設開通的端口號為8000

5.2、開通訪問權限
修改mysite/mysite/settings.py中的ALLOWED_HOSTS=[] 為
技術分享圖片
即允許所有主機訪問,當然也可以只添加允許訪問的主機
其後在mysite目錄下執行以下命令
python manage.py runserver 0.0.0.0:8000
此時在本地主機輸入IP:8000,即IP+端口號,即可返回如下內容
技術分享圖片

期間踩過的坑:
1、python2與python3同時存在
我用的Ubuntu,裏面既有python2也有python3,且默認使用python2,但是我需要默認使用python3
解決方案:
whereis python #找到python位置
我的位置是在/usr/bin目錄下,故進入該目錄
ll |grep python
發現其中默認python2是通過軟連接實現即python指向python2,故而解決方案是刪除相應的軟連接
新建軟連接python -> pyhton3.5
技術分享圖片

2、報錯:DisallowedHostat / Invalid HTTP_HOST header: ‘198.211.99.20’. You may need to addu’198.211.99.20’ to ALLOWED_HOSTS
這是因為沒有修改mysite/mysite/settings.py中的ALLOWED_HOSTS=[] 開通權限導致的問題

3、mysite下目錄結構應該
技術分享圖片
有部分文件因為版本的問題,可能存在差異,但是mysite下一定有的三個文件或者目錄為:learn(APP名稱)、manage.py、mysite

4、
技術分享圖片
按照提示執行相應操作即可

重要內容:
1、是否所有代碼都必須寫入mysite/learn/views.py腳本中,如果存在多個腳本,怎麽處理
解決方案,祥看步驟4.1-4.3

2、如果腳本本身生成的是HTML怎麽處理
即pyecharts生成的本就是html此時怎麽展示
利用如下框架
from django.http import HttpResponse
from django.template.loader import get_template
import datetime
template = get_template(‘learn/templates/index.html’)
html = template.render({‘time’:now})
return HttpResponse(html)
註意:此處需要自己在learn目錄下新建一個templates文件夾,用於存放生成的html文件

【python可視化方案】pyecharts + Django 框架