1. 程式人生 > >Flask檢視函式相關

Flask檢視函式相關

文章目錄

檢視返回響應的三種方式

使用jsonify,生成json資料響應體

使用jsonify及是利用jsonify函式將資料轉換成json格式。由於json資料需字典格式,所以需要字典格式的資料傳遞給他。

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/')
def hello_world():

    #定義字典,轉成json返回
    dic = {
        'name':'xiaoming',
        'age':12
    }

    response = jsonify(dict) 
    return response

if __name__ ==
'__main__': app.run(debug=True)

此方法有簡化形式:

from flask import Flask, jsonify

app = Flask(__name__)

@app.route('/')
def hello_world():

    response = jsonify(name='xiaoming',age=12) 
    return response

if __name__ == '__main__':
    app.run(debug=True)

使用redirect,url_for,生成文字響應體

PyCharm快速導包

redirect 同樣是flask模組中的一個方法,因此我們需要匯入該方法。寫出redirect後可以讓游標停留在單詞中點選Alt + Enter 鍵,自動導包。

redirect導向其他地址

redirect後可以跟一個外鏈地址,也可以跟一個檢視函式地址:

from flask import Flask
from flask import redirect

app = Flask(__name__)
# 導向檢視函式地址
@app.route('/')
def hello_world():
    return redirect('/xiaoming')
# 導向外鏈地址
@app.route('/baidu')
def baidu():
    return redirect('https://www.baidu.com')

@app.route('/xiaoming')
def xiaoming():
    return 'woshixiaoming'

if __name__ == '__main__':
    app.run(debug=True)

url_for反解析

url_for反解析可以通過檢視函式的名稱,返回地址

from flask import Flask
from flask import redirect
from flask import url_for

app = Flask(__name__)

@app.route('/')
def hello_world():

	# url_for("函式名"),可以打印出來"/xiaoming"
    print(url_for("xiaoming")) 
    return redirect('/xiaoming')

@app.route('/xiaoming')
def xiaoming():
    return 'woshixiaoming'


if __name__ == '__main__':

    app.run(debug=True)

重定向

url_for 可以配合 redirect 使用,且可傳引數:

from flask import Flask
from flask import redirect
from flask import url_for

app = Flask(__name__)

# 若位址列傳入"/xiaoming",則將重定向到name函式,並傳值num='1'
@app.route('/xiaoming')
def xiaoming():
    return redirect(url_for('name', num='1'))

# 若位址列傳入"/xiaohua",則將重定向到name函式,並傳值num='2'
@app.route('/xiaohua')
def xiaohua():
    return redirect(url_for('name', num='2'))


@app.route('/name/<path:num>')
def name(num):
    if num == '1':
        return '我是小明'
    elif num == '2':
        return '我是小華'
    else:
        return '我是你猜'


if __name__ == '__main__':
    app.run(debug=True)

返回字串,自定義狀態碼,返回文字響應體

檢視函式可以直接返回字串,也可以同時附帶狀態碼

from flask import Flask

app = Flask(__name__)

# 字串後可以加上狀態碼,也可以空格後加上狀態碼描述
@app.route('/')
def func():
    return '這是字串', '666 zhuangtaima'


if __name__ == '__main__':

    app.run()

abort,errorhandler,異常處理

abort異常丟擲

abort(code):主動丟擲異常狀態碼
引數code:HTTP的錯誤狀態碼
例如:abort(404)丟擲異常

from flask import Flask
from flask import abort

app = Flask(__name__)


@app.route('/')
def func():

    abort(404)


if __name__ == '__main__':

    app.run()

errorhandler捕獲異常

errorhandler可以捕獲異常,並返回異常資訊。這個異常資訊需要作為引數傳給後邊檢視函式:

from flask import Flask
from flask import abort

app = Flask(__name__)


@app.route('/')
def func():

    abort(404)

@app.errorhandler(404)
def fun(e):
    print(e)
    return '捕捉到了'
if __name__ == '__main__':

    app.run()