[08] [Flask 快速上手笔记] 07. 重新导向x状态码xJSON

重新导向和状态码

使用 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 格式

在前後端分离的情境下,用 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-当情况从复杂,变成更加复杂...

[Day 20] 实作 Logging Plugin 建立系统 Logging 机制

系统的 Log 除了基本的 Request Log 及 Error Log 之外,特定的功能也会有记...

D5-用 Swift 和公开资讯,打造投资理财的 Apps { 实作 上市/上柜/兴柜 所有资料的列表 }

写到第五天,开始写 UI 罗~~ 前面都是在做资料处理,所以只有程序码,没有 UI 画面,谢谢看到今...

Day 25【Deploy NFT - Layers Blending & MetaData】Read the License

【前言】 最後这个 Deploy NFT 才是真正真正真正的大魔王,比我想像中还要难超级多,难到我...

Day05分行、分隔线与注解(HTML)

分行 <br>也是一个实用的标签 可以用来排版段落 例如 <p>现在是九月&...

QUIC.cloud CDN 免费方案

QUIC.cloud CDN 免费方案 近期来 QUIC.cloud 除了在,CSS、JS、影像,页...