flask-帶你快速入門-創(chuàng)新互聯(lián)

一個小應(yīng)用

創(chuàng)建一個Python文件:hello.py

創(chuàng)新互聯(lián)專注為客戶提供全方位的互聯(lián)網(wǎng)綜合服務(wù),包含不限于成都網(wǎng)站建設(shè)、網(wǎng)站設(shè)計、福貢網(wǎng)絡(luò)推廣、小程序定制開發(fā)、福貢網(wǎng)絡(luò)營銷、福貢企業(yè)策劃、福貢品牌公關(guān)、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務(wù),您的肯定,是我們大的嘉獎;創(chuàng)新互聯(lián)為所有大學(xué)生創(chuàng)業(yè)者提供福貢建站搭建服務(wù),24小時服務(wù)熱線:18982081108,官方網(wǎng)址:muchs.cn
from flask import Flask
app = Flask(__name__)   #app是程序?qū)嵗?,一個項目只能有一個程序?qū)嵗鼲app.route('/')   #路由裝飾器def hello_world():  #視圖函數(shù)
    return 'Hello World!'  #返回一個字符串if __name__ == '__main__':
     app.run()1234567812345678

用python解釋器來運行

$ python hello.py
* Running on http://127.0.0.1:5000/1212
上面代碼
  1. 首先,我們導(dǎo)入了 Flask 類。這個類的實例將會是我們的 WSGI 應(yīng)用程序

  2. 接下來,我們創(chuàng)建一個該類的實例,第一個參數(shù)是應(yīng)用模塊或者包的名稱。 如果你使用單
    塊(如本例),你應(yīng)該使用 name ,因為模塊的名稱將會因其作為單獨應(yīng)用啟動還是作
    塊導(dǎo)入而有不同( 也即是 ‘main’ 或?qū)嶋H的導(dǎo)入名)。這是必須的,這樣 Flask 才知道
    去找模板、靜態(tài)文件等等。詳情見 Flask的文檔。

  3. 然后,我們使用 route() 裝飾器告訴 Flask 什么樣的URL 能觸發(fā)我們的函數(shù)。

  4. 這個函數(shù)的名字也在生成 URL 時被特定的函數(shù)采用,這個函數(shù)返回我們想要顯示在用戶瀏
    的信息。

  5. 最后我們用 run() 函數(shù)來讓應(yīng)用運行在本地服務(wù)器上。 其中 if name ==’main‘: 確保服
    只會在該腳本被 Python 解釋器直接執(zhí)行的時候才會運行,而不是作為模塊導(dǎo)入的時候。

關(guān)閉服務(wù)器,按 Ctrl+C。

# 修改調(diào)用 run() 的方法使你的服務(wù)器公開可用
app.run(host='0.0.0.0')123123

調(diào)試代碼

雖然 run() 方法適用于啟動本地的開發(fā)服務(wù)器,但是你每次修改代碼后都要手動重啟它。這樣并不夠
優(yōu)雅,而且 Flask 可以做到更好。如果你啟用了調(diào)試支持,服務(wù)器會在代碼修改后自動重新載入,并
在發(fā)生錯誤時提供一個相當(dāng)有用的調(diào)試器。就算出錯了,也不用重新啟動。
有兩種途徑來啟用調(diào)試模式。一種是直接在應(yīng)用對象上設(shè)置:

app.debug = True
app.run()1212

另一種是作為 run 方法的一個參數(shù)傳入:

app.run(debug=True)11

兩種方法的效果完全相同。

路由裝飾器

這里是一些基本的例子:

@app.route('/') def index():   
     return 'Index'@app.route('/hello/') def hello():    
    return '<h2>Hello world!</h2>'12345671234567

客戶端(例如 Web 瀏覽器)把請求發(fā)送給 Web 服務(wù)器, Web 服務(wù)器再把請求發(fā)送給 Flask程序?qū)嵗?。程序?qū)嵗枰缹γ總€ URL 請求運行哪些代碼,所以保存了一個 URL 到Python 函數(shù)的映射關(guān) 系。處理 URL 和函數(shù)之間關(guān)系的程序稱為路由。

在 Flask程序中,定義路由使用 app.route修飾器,route()裝飾器把一個函數(shù)綁定到對應(yīng)的URL上。

函數(shù)的返回值叫響應(yīng),是客戶端接收到的內(nèi)容。如果客戶端是 Web 瀏覽器, 響應(yīng)就是顯示給 用戶查看的文檔。

像index()這樣的,稱為是視圖函數(shù)。視圖函數(shù)返回的響應(yīng)可以是包含html的簡單字符串,也可以是復(fù)雜的表單。

變量規(guī)則

@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修飾器中使用特殊的句法

尖括號的內(nèi)容就是動態(tài)部分,任何能匹配靜態(tài)部分的URL都會映射到這個路由上。調(diào)用視圖函數(shù)的時候,flask會將動態(tài)部分作為參數(shù)傳入函數(shù)中。

路由中的動態(tài)部分默認(rèn)是使用字符串,不過也可以使用類型定義。。例如,路由 /user/只會匹配動 態(tài)片段 id 為整數(shù)的 URL。 Flask 支持在路由中使用 int、 float 和 path 類型。path 類型也是字符串,但不把斜線視作分隔符,而將其當(dāng)作動態(tài)片段的一部分。

變量規(guī)則就是處理動態(tài)信息的。
【注意】

  • app.route()函數(shù)中尖括號里面的是變量名,必須和視圖函數(shù)的形參名一致

  • 如果是int或者float類型,不能直接return。必須轉(zhuǎn)換為字符串格式才可以,否則會報錯: TypeError: ‘int’ object is not callable

重定向和錯誤

  • 用redirect()函數(shù)把用戶重定向到其他地方

  • 用abort()函數(shù)放棄請求并返回錯誤代碼

@app.route('/redir/') def redir():    
    return redirect('/login/')@app.route('/login/') def login():   
     abort(401)1234567812345678

用戶會從/redir/重定向到一個不能訪問的頁面 (401 意味著禁止訪問)。

造URL

用url_for()來給指定的函數(shù)生成url。它接受函數(shù)名作為第一個參數(shù),也接受對應(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)建會轉(zhuǎn)義特殊字符和 Unicode 數(shù)據(jù),免去你很多麻煩。

使用Flask-Script支持命令行選項

Flask-Script是一個Flask擴展,為Flask程序添加了一個命令行解析器。Flask-Script 自帶了 一組常用選項,而且還支持自定義命令。

Flask-Script 擴展使用 pip 安裝:

(venv) $ pip install flask-script11

把命令行解析功能添加到 hello.py 程序中時需要修改的地方:

from flask_script import Manager 
manager = Manager(app)if __name__ == '__main__':    
    manager.run()1234512345

這樣修改之后,程序可以使用一組基本命令行選項。
我們運行 python hello.py runserver 來啟動 Web 服 務(wù)器。

還有很多選項來代替app的debug和host屬性:

--host HOST 設(shè)置host為 HOST --port PORT 設(shè)置port為 PORT-d 設(shè)置以debug模式運行而非run模式 
-r 設(shè)置自動重新載入(app.debug為True)12341234

命令:

python hello.py runserver -d -r --host 0.0.0.011

創(chuàng)新互聯(lián)www.cdcxhl.cn,專業(yè)提供香港、美國云服務(wù)器,動態(tài)BGP最優(yōu)骨干路由自動選擇,持續(xù)穩(wěn)定高效的網(wǎng)絡(luò)助力業(yè)務(wù)部署。公司持有工信部辦法的idc、isp許可證, 機房獨有T級流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確進(jìn)行流量調(diào)度,確保服務(wù)器高可用性。佳節(jié)活動現(xiàn)已開啟,新人活動云服務(wù)器買多久送多久。

網(wǎng)頁標(biāo)題:flask-帶你快速入門-創(chuàng)新互聯(lián)
本文來源:http://muchs.cn/article36/deiisg.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供建站公司、自適應(yīng)網(wǎng)站、企業(yè)網(wǎng)站制作、微信公眾號、云服務(wù)器、外貿(mào)建站

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化