当前位置:首页>python>Python Flask重定向与错误处理

Python Flask重定向与错误处理

  • 2026-09-11 00:16:38
Python Flask重定向与错误处理
在Flask开发中,页面的重定向和错误处理几乎所有的web项目都会用到,今天我们就来看看Flask中redirect和abort的用法。
Flask中的重定向,作用是将用户从当前URL自动 跳转到另一个URL,当重定向触发时,服务器会返回一个HTTP状态码,告诉浏览器加载新的地址。常见的场景有表单提交完成后跳转到结果页,用户登录验证后跳转到首页;资源地址变更后自动跳转。
flask.redirect(location, code=302)
常用重定向HTTP状态码基本是3位数字,服务器用它告知浏览器如何处理请求,常用定向码如下:
状态码
含义
状态码
含义
300
多种选择
301
永久移动
302
临时重定向
303
查看其它地址
304
未修改
305
使用代理
接下来我们看看示例,我们做个简单的登录界面,输入用户名admin跳转到成功页,输入其它内容,跳回登录页
项目文件夹/├── app.py          # Flask 主程序└── templates/      # 模板文件夹    └── login.html  # 登录页面
主程序如下:
from flask import Flask, redirect, url_for, render_template, request# 初始化 Flask 应用app = Flask(__name__)# 首页:展示登录表单@app.route('/')def index():    return render_template("login.html")# 登录成功页@app.route('/success')def success():    return "登录成功!"# 登录处理路由@app.route("/login", methods=["POST", "GET"])def login():    # POST 请求 + 用户名为 admin → 跳转到成功页    if request.method == "POST" and request.form["username"] == "admin":        return redirect(url_for("success"))    # 其他情况 → 跳回登录页    return redirect(url_for('index'))if __name__ == '__main__':    app.run(debug=True)
登录页面模版 templates/login.html
<!DOCTYPE html><htmllang="en"><body>    <!-- 表单提交到 /login 路由 -->    <formmethod="POST"action="/login">        用户名:<inputname="username"type="text"><br>        <buttontype="submit">登录</button>    </form></body></html>
运行python app.py 然后测试
在重定向中,我们几乎不会硬编码URL,而是用url_for()动态生成,我们根据用户名判断,跳转到管理员或者访客页面
from flask import Flask, redirect, url_forapp = Flask(__name__)# 管理员页面@app.route('/admin')def hello_admin():    return '你好,管理员'# 访客页面@app.route('/guest/<guest>')def hello_guest(guest):    return f'你好,{guest} 访客'# 根据用户名自动跳转@app.route('/user/<name>')def hello_user(name):    if name == 'admin':        # 跳转到 hello_admin 函数对应的路由        return redirect(url_for('hello_admin'))    else:        # 跳转到 hello_guest,并传递参数        return redirect(url_for('hello_guest', guest=name))if __name__ == '__main__':    app.run(debug=True)
当访问/user/admin 跳转到/admin, 显示 【你好,管理员】,当访问/user/zhangsan 跳转到/guest/zhangsan,显示【你好,zhangsan访客】
看完redirect,我们再看看abort函数,它的基本语法abort(code,message=None)
例如我们要判断用户名,如果以数字开头,则直接抛出400错误:
from flask import Flask, abortapp = Flask(__name__)@app.route('/<uname>')def index(uname):    # 用户名首字符是数字 → 抛出 400 错误    if uname[0].isdigit():        abort(400)    return '<h1>用户名格式合法</h1>'if __name__ == '__main__':    app.run()
400表示非法请求,如果我们将错误码改为403,拒绝非法用户名访问:
from flask import Flask, abortapp = Flask(__name__)@app.route('/<uname>')def index(uname):    if uname[0].isdigit():        abort(403)    return '<h1>用户名格式合法</h1>'if __name__ == '__main__':    app.run()
总之,Flask重定向用redirect 配合url_for 动态生成URL,适配表单提交、登录验证登场景,错误处理用abort(),直接抛出标准HTTP错误码,快速终止非法请求。

最新文章

随机文章