基於Python的Flask Web 開發 筆記 (1)
阿新 • • 發佈:2019-02-09
1)安裝
$ pip install flask
2) 主要程式結構
from flask import Flask from flask import request app = Flask(__name__) #初始化 @app.route('/')<span style="white-space:pre"> </span># 路由,URL和對應處理函式 def index():<span style="white-space:pre"> </span># 檢視函式,渲染返回頁面 user_agent = request.headers.get('User-Agent') return '<p>Your browser is %s</p>' % user_agent @app.route('/user/<name>')<span style="white-space:pre"> </span># 動態路由,加引數的請求處理 def user(name): return '<h1>Hello, %s!</h1>' % name if __name__ == '__main__': app.run(debug=True)<span style="white-space:pre"> </span># 啟動伺服器
3)請求響應迴圈
Flask從客戶端收到請求時,要讓檢視函式能訪問一些物件, request 物件就是一個很好的例子。
上述例子打印出了UA(使用者代理)內容
Flask 使用上下文臨時把某些物件變為全域性可訪問 ,有 程式上下文 和 請求上下文
程式上下文: current_app g 請求上下文: request session
上下文需要推送後,才可呼叫。 app.route 或 app.add_url_rule() 生成路由對映
響應,
可返回響應內容和狀態嗎
設定cookie或重定向
from flask import Flask from flask import request from flask import make_response from flask import redirect app = Flask(__name__) @app.route('/') def index(): #resp = make_response('<h1>This doc carries a cookie</h1>') #resp.set_cookie('answer', '42') #return resp return redirect('http://www.csdn.net') @app.route('/user/<name>') def user(name): return '<h1>Hello, %s!</h1>' % name if __name__ == '__main__': app.run(debug=True)
abort 響應函式
from flask import abort
@app.route('/user/<id>')
def get_user(id):
user = load_user(id)
if not user:
abort(404)
return '<h1>Hello, %s</h1>' % user.name
Flask擴充套件
使用Flask-Script支援命令列選項
安裝: $ pip install flask-script
from flask.ext.script import Manager manager = Manager(app) # ... if __name__ == '__main__': manager.run()
$ python hello.py runserver --host 0.0.0.0
* Running on http://0.0.0.0:5000/
* Restarting with reloader
Web 伺服器可使用 http://a.b.c.d:5000/ 網路中的任一臺電腦進行訪問,其中“a.b.c.d”是伺服器所在計算機的外網 IP 地址