使用 redirect() 函数可以重新导向到指定网址
而 abort() 可以直接中断请求,并返回 status code
from flask import abort, redirect, url_for
@app.route('/')
def index():
return redirect(url_for('login'))
@app.route('/login')
def login():
abort(401)
this_is_never_executed()
如果想在 404 的时候显示 error.html 画面
@app.errorhandler(404)
def not_found(error):
return render_template('error.html'), 404
还可以使用 make_response() 把回传表达式包起来,获得回传的物件後进行修改再回传
@app.errorhandler(404)
def not_found(error):
resp = make_response(render_template('error.html'), 404)
resp.headers['X-Something'] = 'A value'
return resp
在前後端分离的情境下,用 JSON 作为 API 回传格式是很常见的作法
如果回传一个dict
到 view 里面,就会被转换成一个 JSON 的回传格式
@app.route("/me")
def me_api():
user = get_current_user()
return {
"username": user.username,
"theme": user.theme,
"image": url_for("user_image", filename=user.image),
}
如果单纯回传dict
不足以满足需求,还想创建其他类型的 JSON 格式回传
可以使用 jsonify() 函数,当然也可以到套件包里找找有没有适合的
@app.route("/users")
def users_api():
users = get_all_users()
return jsonify([user.to_json() for user in users])
<<: 【设计+切版30天实作】|Day8 - 看起来简单但不单调的steps设计
>>: 30天学会C语言: Day 6-当情况从复杂,变成更加复杂...
系统的 Log 除了基本的 Request Log 及 Error Log 之外,特定的功能也会有记...
写到第五天,开始写 UI 罗~~ 前面都是在做资料处理,所以只有程序码,没有 UI 画面,谢谢看到今...
【前言】 最後这个 Deploy NFT 才是真正真正真正的大魔王,比我想像中还要难超级多,难到我...
分行 <br>也是一个实用的标签 可以用来排版段落 例如 <p>现在是九月&...
QUIC.cloud CDN 免费方案 近期来 QUIC.cloud 除了在,CSS、JS、影像,页...