,上篇文章《老男人開始學(xué)python之Flask安裝》中已經(jīng)安裝好virtualenv壕翩,使用virtualenv創(chuàng)建了一個虛擬環(huán)境,并且在虛擬環(huán)境中安裝好了Flask及其擴展剃法,接下來,使用Flask來寫一個簡單的“Hello Word”。
參考教程:http://www.pythondoc.com/flask-mega-tutorial/helloworld.html
一、準備工作:
- 進入命令行下進入F:\pythontest目錄肩狂;
- 該目錄已經(jīng)包含一個flask目錄,flask中有Python 解釋器以及 Flask 框架以及我們將要在這個應(yīng)用程序中使用的擴展姥饰;
- 創(chuàng)建基本的文件結(jié)構(gòu):
F:\pythontest>mkdir app #應(yīng)用程序包放置目錄
F:\pythontest>mkdir app\static #存放靜態(tài)文件如圖片之類
F:\pythontest>mkdir app\templates #模板文件目錄
F:\pythontest>mkdir tmp #臨時文件目錄
二傻谁、開始寫程序:
1.為app包在F:\pythontest\app目錄中,創(chuàng)建初始化腳本:__init__.py
from flask import Flask
app = Flask(__name__)
from app import views
說明:
上面的腳本簡單地創(chuàng)建應(yīng)用對象列粪,接著從app包導(dǎo)入視圖模塊审磁,該模塊我們暫未編寫谈飒。
2.編寫第一個視圖函數(shù)(文件 app/views.py ):
from app import app
@app.route('/')
@app.route('/index')
@app.route('/test')
def index():
return "Hello,World!"
視圖說明:
- 只有一個函數(shù),它只是返回一個字符串态蒂,在客戶端的網(wǎng)頁瀏覽器上顯示杭措。
- 3個 route 裝飾器創(chuàng)建了從網(wǎng)址 / 、/index 以及/test到這個函數(shù)的映射钾恢。
- 視圖是響應(yīng)來自網(wǎng)頁瀏覽器的請求的處理器手素。
- 在 Flask 中,視圖是編寫成 Python 函數(shù)瘩蚪。每一個視圖函數(shù)是映射到一個或多個請求的 URL泉懦。
3. 創(chuàng)建啟動我們的應(yīng)用程序的開發(fā) Web 服務(wù)器:
在根目錄即(F:\pythontest)中創(chuàng)建一個腳本:test.py
#!flask/bin/python
from app import app
app.run(debug = True)
說明:
腳本簡單地從我們的 app 包中導(dǎo)入 app 變量并且調(diào)用它的 run 方法來啟動服務(wù)器。
app 變量中含有我們在之前創(chuàng)建的 Flask 實例募舟;
4. 運行test.py:
F:\pythontest>flask\Scripts\python test.py
5. 分別測試訪問以下鏈接:
http://127.0.0.1:5000/
http://127.0.0.1:5000/test
http://127.0.0.1:5000/index
http://127.0.0.1:5000/home
前三個均顯示“Hello,World!”祠斧,最后一個顯示Not Found 404錯誤;
6.擴展改造一下:
修改views.py為:
from app import app
@app.route('/')
@app.route('/index')
def index():
return "Hello,World!"
@app.route('/test')
def hello():
return "my test"
這樣將會是:
http://127.0.0.1:5000/
http://127.0.0.1:5000/index
對應(yīng)index函數(shù)拱礁;
http://127.0.0.1:5000/test 對應(yīng)hello函數(shù)琢锋;
至此一個web小程序就寫好了?那么對于初學(xué)的我就有幾個問題了:
- 為什么是文件名是
__init__.py
? - “
__name__
”是什么呢灶? - from ... import ... 是什么意思吴超?
- form ... import ... 和 import ...的區(qū)別是什么?
下篇文章針對以上幾個問題進行學(xué)習(xí)和總結(jié)鸯乃。