Flask學(xué)習(xí)之路(一)之Hello,World

前言

本教程來自The Flask Mega-Tutorial的譯本,選用的Makedown編輯器為REMARKABLE,實驗環(huán)境為Ubuntu18.04,Python版本為 3.7.1,由于才開始接觸Makedown語法,行文風(fēng)格參考了此文翻譯,在此向譯者致敬。


安裝Python的過程被略去,若你還沒有安裝Python,此處建議安裝Anaconda。

安裝Flask


Python有公共倉庫來托管第三方的包,我們可以通過<code>pip3</code>安裝,基本格式如下:(注:若ubuntu中同時有Python2.x和3.x,<code>pip</code>默認(rèn)為Python2安裝,要為Python3安裝需使用<code>pip3</code>)


pip3 install <package-name>

在此涉及到版本問題所引起的故障,可以參考第一行Python代碼寫的此篇文章,通過使用虛擬環(huán)境可以解決這個問題,我們先創(chuàng)建項目目錄,將此應(yīng)用命名為microblog:


mkdir microblog

cd microblog

在Python3中創(chuàng)建此虛擬環(huán)境的命令為:


python3  -m venv venv

若提示缺少依賴,在Ubuntu中可以使用此命令安裝依賴sudo apt-get install python3-venv,命令執(zhí)行成功的話會在microblog目錄下生成一個venv文件夾,首先查看自己的Python是否包含了virtualenv,通過使用此命令可以來確認(rèn):


virtualenv venv

若提示錯誤則需下載virtualenv,創(chuàng)建完后可以使用以下命令激活:


source venv/bin/activate

前面出現(xiàn)(venv)表示虛擬環(huán)境激活,在虛擬環(huán)境中安裝Flask


(venv) $ pip3 install flask

測試可以通過導(dǎo)入模塊來進行,打開解釋器>>> import flask沒有拋出異常即為成"

"Hello,World"Flask應(yīng)用


Flask網(wǎng)站提供了應(yīng)用實例,讓我們從Hello,World開始這段奇妙之旅,在此先理解一下Python中modulepackage

moduel:一個eg.py即為module,eg為模塊名(注:在C中一般稱為lib,但在Python中,一般稱為moduel

package:一個有層次的文件目錄,一定含有__init__.py,定義了由一組moduel組成的應(yīng)用環(huán)境。

我們創(chuàng)建一個名為apppackage來存放應(yīng)用,創(chuàng)建__init__.py來使文件夾變?yōu)?code>package。

__init__.py:控制著包的導(dǎo)入行為,目的是包含不同運行級別的包的可選的初始化代碼,用以自動加載子模塊,具體用法可以參考Python3-cookbook。

__init__.py中輸入如下代碼:


from flask import Flask

app = Flask(__name__)

from app import routes

此處app = Flask(__name__)中創(chuàng)建了Flask的實例,參數(shù)name,告訴了falsk了Application的名字,官方文檔中有:If you are using a single module,__name__ is always the correct value. If you however are using a package, it’s usually recommended to hardcode the name of your package there.

在Flask中,應(yīng)用程序路由的處理邏輯被編寫為Python函數(shù),稱為視圖函數(shù)。 視圖函數(shù)被映射到一個或多個路由URL,以便Flask知道當(dāng)客戶端請求給定的URL時執(zhí)行什么邏輯。在app/routes.py中 實現(xiàn)了視圖函數(shù)


from app import app

@app.route('/')

@app.route('/index')

def index():

    return "Hello, World!"

在Python中@符號稱為裝飾器的語法糖,關(guān)于裝飾器更詳細的了解可以參考流暢的Python,@app.route裝飾器將路徑//index關(guān)聯(lián)到index函數(shù),這樣在訪問這兩個URL時將調(diào)用此函數(shù)并將返回值作為響應(yīng)傳遞給瀏覽器。

要完成應(yīng)用程序還需要在microblog目錄下創(chuàng)建一個名為microblog.py的腳本,通過此來導(dǎo)入應(yīng)用實例:


from app import app

此處第一個app為包名(包含文件的init.py文件夾),第二個是包中導(dǎo)入app對象,在設(shè)置完FLASK_APP環(huán)境變量就可以運行第一個程序了,命令如下:


export FLASK_APP=microblog.py

用此種方法在每次運行之前都得設(shè)置環(huán)境變量,通過設(shè)置可以只會在運行flask命令時自動注冊生效的環(huán)境變量首先安裝python-dotenv


pip3 install python-dotenv

安裝后在microblog目錄下新建一個.flaskenv的文件,內(nèi)容是:


FLASK_APP=microblog.py

在虛擬環(huán)境中,通過運行flask run就成功運行了構(gòu)筑的第一個Web應(yīng)用了。通過輸出可以看到服務(wù)器運行在127.0.0.1上,使用127.0.0.1:5000就可以看到構(gòu)筑的Hello,World頁面了。

補充


為了更好地理解from app import app,下面對實例使用my_app進行重命名,則在__init__.py中代碼修改:

from flask import Flask
my_app = Flask(__name__)

from app import routes

在此處創(chuàng)建的對象為my_app,這樣就可以來進行區(qū)分了,相應(yīng)的在microblog.pyroutes.py也得進行更改

#microblog.py
from app import my_app 

#routes.py
from app import my_app

@my_app.route('/')
@my_app.route('/index')

def index():
    return("月亮與六便士")

運行結(jié)果如圖:


2019-03-27 22-14-04 的屏幕截圖.png
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容