成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

Flask二之快速入門

XGBCCC / 1401人閱讀

摘要:一一個(gè)最小的應(yīng)用是程序?qū)嵗?,一個(gè)項(xiàng)目只能有一個(gè)程序?qū)嵗酚裳b飾器視圖函數(shù)返回一個(gè)字符串把程序保存為用解釋器運(yùn)行訪問,會(huì)看見問候。路由裝飾器這個(gè)函數(shù)的返回值稱為響應(yīng),是客戶端接收到的內(nèi)容。

一.一個(gè)最小的Flask應(yīng)用
from flask import Flask
app = Flask(__name__)
#app是程序?qū)嵗粋€(gè)項(xiàng)目只能有一個(gè)程序?qū)嵗[email protected]("/")
#路由裝飾器
def hello_world():
#視圖函數(shù)
    return "Hello World!"    
    #返回一個(gè)字符串
if __name__ == "__main__":
    app.run()

把程序保存為hello.py 用Python解釋器運(yùn)行

$ python hello.py
    * Running on  http://127.0.0.1:5000/

訪問 http://127.0.0.1:5000/ ,會(huì)看見 Hello World 問候。欲關(guān)閉服務(wù)器,按 Ctrl+C。

這段代碼做了什么?

首先,我們導(dǎo)入了 Flask 類。這個(gè)類的實(shí)例將會(huì)是我們的 WSGI 應(yīng)用程序
2.接下來,我們創(chuàng)建一個(gè)該類的實(shí)例,第一個(gè)參數(shù)是應(yīng)用模塊或者包的名稱。 如果你使用單一的模

塊(如本例),你應(yīng)該使用 name ,因?yàn)槟K的名稱將會(huì)因其作為多帶帶應(yīng)用啟動(dòng)還是作為模
塊導(dǎo)入而有不同( 也即是 "__main__" 或?qū)嶋H的導(dǎo)入名)。這是必須的,這樣 Flask 才知道到哪
去找模板、靜態(tài)文件等等。 詳情見 Flask的文檔。

然后,我們使用 route() 裝飾器告訴 Flask 什么樣的URL 能觸發(fā)我們的函數(shù)。
4.這個(gè)函數(shù)的名字也在生成 URL 時(shí)被特定的函數(shù)采用,這個(gè)函數(shù)返回我們想要顯示在用戶瀏覽器中

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

(1)調(diào)試模式

如果你啟用了調(diào)試支持,服務(wù)器會(huì)在代碼修改后自動(dòng)重新載入,并在發(fā)生錯(cuò)誤時(shí)提供一個(gè)相當(dāng)有用的調(diào)試器。
有兩種途徑來啟用調(diào)試模式:
一種是直接在應(yīng)用對(duì)象上設(shè)置:

app.debug = True
app.run()

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

app.run(debug=True)

兩種方法的效果完全相同。
【注意】

交互式調(diào)試器絕對(duì)不能用于生產(chǎn)環(huán)境。

(2)路由裝飾器
@app.route("/")
def index():
    return "Index"
    
@app.route("/hello/")
def hello():
    return "

Hello world!

"

這個(gè)函數(shù)的返回值稱為響應(yīng),是客戶端接收到的內(nèi)容。
像 index() 這樣的函數(shù)稱為視圖函數(shù)(view function)。視圖函數(shù)返回的響應(yīng)可
以是包含HTML 的簡(jiǎn)單字符串,也可以是復(fù)雜的表單。

(3)變量規(guī)則
@app.route("/user/")
def showUserName(name):
    return "User %s" %name
    
@app.route("/post/")
def showPostId(post_id):
    return "Post %d" %post_id

Flask 支持在路由中使用 int、 float 和 path 類型。path 類型也是字符串,但
不把斜線視作分隔符,而將其當(dāng)作動(dòng)態(tài)片段的一部分。
int | 接受整數(shù)
float | 接受浮點(diǎn)數(shù)
path | 和默認(rèn)的相似,但也接受斜線
變量規(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

(4)唯一 URL / 重定向行為
@app.route("/about/") # 建議用法
# @app.route("/about") # 不建議用法
def about():
    return "The about page"

雖然它們看起來著實(shí)相似,但它們結(jié)尾斜線的使用在 URL 定義 中不同:

- 第一種情況中,指向 about的規(guī)范 URL 尾端有一個(gè)斜線。這種感覺很像在文件系
統(tǒng)中的文件夾。訪問一個(gè)結(jié)尾不帶斜線的 URL 會(huì)被 Flask 重定向到帶斜線的規(guī)范
URL 去。因此, 強(qiáng)烈建議統(tǒng)一加上斜線!
- 第二種情況的 URL 結(jié)尾不帶斜線,類似 UNIX-like 系統(tǒng)下的文件的路徑名。訪問
結(jié)尾帶斜線的URL 會(huì)產(chǎn)生一個(gè) 404 “Not Found” 錯(cuò)誤。

這個(gè)行為使得在遺忘尾斜線時(shí),允許關(guān)聯(lián)的 URL 接任工作,與 Apache 和其它的服
務(wù)器的行為并無二異。此外,也保證了 URL 的唯一,有助于避免搜索引擎索引同一
個(gè)頁面兩次。

(5)重定向和錯(cuò)誤

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

用 abort() 函數(shù)放棄請(qǐng)求并返回錯(cuò)誤代碼。例如:

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

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

(6)構(gòu)造URL

用 url_for()來給指定的函數(shù)生成(構(gòu)造) 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可以是字符串也可以是整型

使用url_for()生成 URL 而非在模板中硬編碼的好處:

1. 反向構(gòu)建通常比硬編碼的描述性更好。允許一次性修改 URL,而不用到處邊找邊改。
2. URL 構(gòu)建會(huì)轉(zhuǎn)義特殊字符和 Unicode 數(shù)據(jù),免去你很多麻煩。
(7)使用Flask-Script支持命令行選項(xiàng)

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

Flask-Script 擴(kuò)展使用 pip 安裝:

(venv) $ pip install flask-script

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

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

修改之后程序可以使用一組基本命令行選項(xiàng)來啟動(dòng) Web 服務(wù)器。:

python hello.py runserver
--host HOST  |設(shè)置host為 HOST
--port PORT  |設(shè)置port為 PORT
-d           |設(shè)置以debug模式運(yùn)行而非run模式
-r           |設(shè)置自動(dòng)重新載入(app.debug為True)

標(biāo)準(zhǔn)命令:

python hello.py runserver -d -r --host 0.0.0.0
python hello.py runserver -d -r --port:5001

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/40798.html

相關(guān)文章

  • Spring 入門學(xué)習(xí)二之IOC

    摘要:今天來學(xué)習(xí)一包導(dǎo)入在官網(wǎng)下載開發(fā)包然后導(dǎo)入需要的包到項(xiàng)目目錄下。 今天來學(xué)習(xí)Spring ioc . 一、spring jar 包導(dǎo)入 在 spring 官網(wǎng)下載開發(fā)包 spring-framework-4.2.4.RELEASE,然后導(dǎo)入需要的 jar 包到項(xiàng)目 /lib/ 目錄下。 ?showImg(https://segmentfault.com/img/bVbbiyW?w=34...

    Integ 評(píng)論0 收藏0
  • 零基礎(chǔ)如何學(xué)爬蟲技術(shù)

    摘要:楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),。本文來源知乎作者路人甲鏈接楚江數(shù)據(jù)提供網(wǎng)站數(shù)據(jù)采集和爬蟲軟件定制開發(fā)服務(wù),服務(wù)范圍涵蓋社交網(wǎng)絡(luò)電子商務(wù)分類信息學(xué)術(shù)研究等。 楚江數(shù)據(jù)是專業(yè)的互聯(lián)網(wǎng)數(shù)據(jù)技術(shù)服務(wù),現(xiàn)整理出零基礎(chǔ)如何學(xué)爬蟲技術(shù)以供學(xué)習(xí),http://www.chujiangdata.com。 第一:Python爬蟲學(xué)習(xí)系列教程(來源于某博主:htt...

    KunMinX 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<