標籤:src 主機 python環境 lan 版本 新版 python2 host tap
背景:基於對於可視化的巨大需求以及成本因素,利用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 架構