Flask檢視函式相關
阿新 • • 發佈:2018-11-23
文章目錄
- 檢視返回響應的三種方式
- abort,errorhandler,異常處理
檢視返回響應的三種方式
使用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()