您好,登錄后才能下訂單哦!
創建一個Python文件:hello.py
from flask import Flask app = Flask(__name__) #app是程序實例,一個項目只能有一個程序實例@app.route('/') #路由裝飾器def hello_world(): #視圖函數 return 'Hello World!' #返回一個字符串if __name__ == '__main__': app.run()1234567812345678
用python解釋器來運行
$ python hello.py * Running on http://127.0.0.1:5000/1212
首先,我們導入了 Flask 類。這個類的實例將會是我們的 WSGI 應用程序
接下來,我們創建一個該類的實例,第一個參數是應用模塊或者包的名稱。 如果你使用單
塊(如本例),你應該使用 name ,因為模塊的名稱將會因其作為單獨應用啟動還是作
塊導入而有不同( 也即是 ‘main’ 或實際的導入名)。這是必須的,這樣 Flask 才知道
去找模板、靜態文件等等。詳情見 Flask的文檔。
然后,我們使用 route() 裝飾器告訴 Flask 什么樣的URL 能觸發我們的函數。
這個函數的名字也在生成 URL 時被特定的函數采用,這個函數返回我們想要顯示在用戶瀏
的信息。
最后我們用 run() 函數來讓應用運行在本地服務器上。 其中 if name ==’main‘: 確保服
只會在該腳本被 Python 解釋器直接執行的時候才會運行,而不是作為模塊導入的時候。
關閉服務器,按 Ctrl+C。
# 修改調用 run() 的方法使你的服務器公開可用 app.run(host='0.0.0.0')123123
雖然 run() 方法適用于啟動本地的開發服務器,但是你每次修改代碼后都要手動重啟它。這樣并不夠
優雅,而且 Flask 可以做到更好。如果你啟用了調試支持,服務器會在代碼修改后自動重新載入,并
在發生錯誤時提供一個相當有用的調試器。就算出錯了,也不用重新啟動。
有兩種途徑來啟用調試模式。一種是直接在應用對象上設置:
app.debug = True app.run()1212
另一種是作為 run 方法的一個參數傳入:
app.run(debug=True)11
兩種方法的效果完全相同。
這里是一些基本的例子:
@app.route('/') def index(): return 'Index'@app.route('/hello/') def hello(): return '<h2>Hello world!</h2>'12345671234567
客戶端(例如 Web 瀏覽器)把請求發送給 Web 服務器, Web 服務器再把請求發送給 Flask程序實例。程序實例需要知道對每個 URL 請求運行哪些代碼,所以保存了一個 URL 到Python 函數的映射關 系。處理 URL 和函數之間關系的程序稱為路由。
在 Flask程序中,定義路由使用 app.route修飾器,route()裝飾器把一個函數綁定到對應的URL上。
函數的返回值叫響應,是客戶端接收到的內容。如果客戶端是 Web 瀏覽器, 響應就是顯示給 用戶查看的文檔。
像index()這樣的,稱為是視圖函數。視圖函數返回的響應可以是包含html的簡單字符串,也可以是復雜的表單。
@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修飾器中使用特殊的句法
尖括號的內容就是動態部分,任何能匹配靜態部分的URL都會映射到這個路由上。調用視圖函數的時候,flask會將動態部分作為參數傳入函數中。
路由中的動態部分默認是使用字符串,不過也可以使用類型定義。。例如,路由 /user/只會匹配動 態片段 id 為整數的 URL。 Flask 支持在路由中使用 int、 float 和 path 類型。path 類型也是字符串,但不把斜線視作分隔符,而將其當作動態片段的一部分。
變量規則就是處理動態信息的。
【注意】
app.route()函數中尖括號里面的是變量名,必須和視圖函數的形參名一致
如果是int或者float類型,不能直接return。必須轉換為字符串格式才可以,否則會報錯: TypeError: ‘int’ object is not callable
用redirect()函數把用戶重定向到其他地方
用abort()函數放棄請求并返回錯誤代碼
@app.route('/redir/') def redir(): return redirect('/login/')@app.route('/login/') def login(): abort(401)1234567812345678
用戶會從/redir/重定向到一個不能訪問的頁面 (401 意味著禁止訪問)。
用url_for()來給指定的函數生成url。它接受函數名作為第一個參數,也接受對應URL規則的變量部分的命名參數。
@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 構建會轉義特殊字符和 Unicode 數據,免去你很多麻煩。
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 服 務器。
還有很多選項來代替app的debug和host屬性:
--host HOST 設置host為 HOST --port PORT 設置port為 PORT-d 設置以debug模式運行而非run模式 -r 設置自動重新載入(app.debug為True)12341234
命令:
python hello.py runserver -d -r --host 0.0.0.011
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。