1. 程式人生 > >基於Python的Flask Web 開發 筆記 (1)

基於Python的Flask Web 開發 筆記 (1)

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 地址