創(chuàng)建一個(gè)Python文件:hello.py
from flask import Flask app = Flask(__name__) #app是程序?qū)嵗?,一個(gè)項(xiàng)目只能有一個(gè)程序?qū)嵗鼲app.route('/') #路由裝飾器def hello_world(): #視圖函數(shù) return 'Hello World!' #返回一個(gè)字符串if __name__ == '__main__': app.run()1234567812345678
用python解釋器來運(yùn)行
$ python hello.py * Running on http://127.0.0.1:5000/1212
首先,我們導(dǎo)入了 Flask 類。這個(gè)類的實(shí)例將會(huì)是我們的 WSGI 應(yīng)用程序
接下來,我們創(chuàng)建一個(gè)該類的實(shí)例,第一個(gè)參數(shù)是應(yīng)用模塊或者包的名稱。 如果你使用單
塊(如本例),你應(yīng)該使用 name ,因?yàn)槟K的名稱將會(huì)因其作為單獨(dú)應(yīng)用啟動(dòng)還是作
塊導(dǎo)入而有不同( 也即是 ‘main’ 或?qū)嶋H的導(dǎo)入名)。這是必須的,這樣 Flask 才知道
去找模板、靜態(tài)文件等等。詳情見 Flask的文檔。
然后,我們使用 route() 裝飾器告訴 Flask 什么樣的URL 能觸發(fā)我們的函數(shù)。
這個(gè)函數(shù)的名字也在生成 URL 時(shí)被特定的函數(shù)采用,這個(gè)函數(shù)返回我們想要顯示在用戶瀏
的信息。
最后我們用 run() 函數(shù)來讓應(yīng)用運(yùn)行在本地服務(wù)器上。 其中 if name ==’main‘: 確保服
只會(huì)在該腳本被 Python 解釋器直接執(zhí)行的時(shí)候才會(huì)運(yùn)行,而不是作為模塊導(dǎo)入的時(shí)候。
關(guān)閉服務(wù)器,按 Ctrl+C。
# 修改調(diào)用 run() 的方法使你的服務(wù)器公開可用 app.run(host='0.0.0.0')123123
雖然 run() 方法適用于啟動(dòng)本地的開發(fā)服務(wù)器,但是你每次修改代碼后都要手動(dòng)重啟它。這樣并不夠
優(yōu)雅,而且 Flask 可以做到更好。如果你啟用了調(diào)試支持,服務(wù)器會(huì)在代碼修改后自動(dòng)重新載入,并
在發(fā)生錯(cuò)誤時(shí)提供一個(gè)相當(dāng)有用的調(diào)試器。就算出錯(cuò)了,也不用重新啟動(dòng)。
有兩種途徑來啟用調(diào)試模式。一種是直接在應(yīng)用對(duì)象上設(shè)置:
app.debug = True app.run()1212
另一種是作為 run 方法的一個(gè)參數(shù)傳入:
app.run(debug=True)11
兩種方法的效果完全相同。
這里是一些基本的例子:
@app.route('/') def index(): return 'Index'@app.route('/hello/') def hello(): return '<h2>Hello world!</h2>'12345671234567
客戶端(例如 Web 瀏覽器)把請(qǐng)求發(fā)送給 Web 服務(wù)器, Web 服務(wù)器再把請(qǐng)求發(fā)送給 Flask程序?qū)嵗?。程序?qū)嵗枰缹?duì)每個(gè) URL 請(qǐng)求運(yùn)行哪些代碼,所以保存了一個(gè) URL 到Python 函數(shù)的映射關(guān) 系。處理 URL 和函數(shù)之間關(guān)系的程序稱為路由。
在 Flask程序中,定義路由使用 app.route修飾器,route()裝飾器把一個(gè)函數(shù)綁定到對(duì)應(yīng)的URL上。
函數(shù)的返回值叫響應(yīng),是客戶端接收到的內(nèi)容。如果客戶端是 Web 瀏覽器, 響應(yīng)就是顯示給 用戶查看的文檔。
像index()這樣的,稱為是視圖函數(shù)。視圖函數(shù)返回的響應(yīng)可以是包含html的簡(jiǎn)單字符串,也可以是復(fù)雜的表單。
@app.route('/user/<name>')def showUserName(name): return "User %s" %name@app.route('/post/<int:post_id>') def showPostId(post_id): return "Post %d" %post_id12345671234567
很多URL地址都包含可變部分。flask中,只需在route修飾器中使用特殊的句法
尖括號(hào)的內(nèi)容就是動(dòng)態(tài)部分,任何能匹配靜態(tài)部分的URL都會(huì)映射到這個(gè)路由上。調(diào)用視圖函數(shù)的時(shí)候,flask會(huì)將動(dòng)態(tài)部分作為參數(shù)傳入函數(shù)中。
路由中的動(dòng)態(tài)部分默認(rèn)是使用字符串,不過也可以使用類型定義。。例如,路由 /user/只會(huì)匹配動(dòng) 態(tài)片段 id 為整數(shù)的 URL。 Flask 支持在路由中使用 int、 float 和 path 類型。path 類型也是字符串,但不把斜線視作分隔符,而將其當(dāng)作動(dòng)態(tài)片段的一部分。
變量規(guī)則就是處理動(dòng)態(tài)信息的。
【注意】
app.route()函數(shù)中尖括號(hào)里面的是變量名,必須和視圖函數(shù)的形參名一致
如果是int或者float類型,不能直接return。必須轉(zhuǎn)換為字符串格式才可以,否則會(huì)報(bào)錯(cuò): TypeError: ‘int’ object is not callable
用redirect()函數(shù)把用戶重定向到其他地方
用abort()函數(shù)放棄請(qǐng)求并返回錯(cuò)誤代碼
@app.route('/redir/') def redir(): return redirect('/login/')@app.route('/login/') def login(): abort(401)1234567812345678
用戶會(huì)從/redir/重定向到一個(gè)不能訪問的頁面 (401 意味著禁止訪問)。
用url_for()來給指定的函數(shù)生成url。它接受函數(shù)名作為第一個(gè)參數(shù),也接受對(duì)應(yīng)URL規(guī)則的變量部分的命名參數(shù)。
@app.route('/world/') def world(): # return redirect('/hello/') # return redirect(url_for('hello')) # return redirect(url_for('showUserName',name = 'liusheng')) return redirect(url_for('showPostId', post_id = 100)) # 注意這里的100可以是字符串也可以是整型12345671234567
使用url_for()生成 URL 的好處:
- 允許一次性修改 URL,而不用到處邊找邊改。
- URL 構(gòu)建會(huì)轉(zhuǎn)義特殊字符和 Unicode 數(shù)據(jù),免去你很多麻煩。
Flask-Script是一個(gè)Flask擴(kuò)展,為Flask程序添加了一個(gè)命令行解析器。Flask-Script 自帶了 一組常用選項(xiàng),而且還支持自定義命令。
Flask-Script 擴(kuò)展使用 pip 安裝:
(venv) $ pip install flask-script11
把命令行解析功能添加到 hello.py 程序中時(shí)需要修改的地方:
from flask_script import Manager manager = Manager(app)if __name__ == '__main__': manager.run()1234512345
這樣修改之后,程序可以使用一組基本命令行選項(xiàng)。
我們運(yùn)行 python hello.py runserver 來啟動(dòng) Web 服 務(wù)器。
還有很多選項(xiàng)來代替app的debug和host屬性:
--host HOST 設(shè)置host為 HOST --port PORT 設(shè)置port為 PORT-d 設(shè)置以debug模式運(yùn)行而非run模式 -r 設(shè)置自動(dòng)重新載入(app.debug為True)12341234
命令:
python hello.py runserver -d -r --host 0.0.0.011
創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國(guó)云服務(wù)器,動(dòng)態(tài)BGP最優(yōu)骨干路由自動(dòng)選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機(jī)房獨(dú)有T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動(dòng)現(xiàn)已開啟,新人活動(dòng)云服務(wù)器買多久送多久。
網(wǎng)頁標(biāo)題:flask-帶你快速入門-創(chuàng)新互聯(lián)
本文來源:http://sd-ha.com/article36/deiisg.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、自適應(yīng)網(wǎng)站、企業(yè)網(wǎng)站制作、微信公眾號(hào)、云服務(wù)器、外貿(mào)建站
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)
猜你還喜歡下面的內(nèi)容