Python Flask重定向和错误处理

本文概述

  • 标准HTTP代码
  • abort()函数
Flask类提供了redirect()函数, 该函数将用户重定向到具有指定状态代码的某些指定URL。
HTTP状态代码是服务器对浏览器请求的响应。当我们访问网站时, 请求将发送到服务器, 然后服务器用三位数代码(HTTP状态代码)响应浏览器的请求。此状态代码也代表错误。
下面给出了使用redirect()函数的语法。
Flask.redirect(< location> , < status-code> , < response> )

它接受以下参数。
SN Parameter Description
1 location 这是将重定向响应的URL。
2 状态码 状态代码与服务器的响应一起发送到浏览器的标头。
3 response 它是项目中用于将来需求的响应实例。
考虑以下示例, 在该示例中, 否则将在成功登录时使用HTTP状态代码302(找到)将用户重定向到成功页面。用户仅还原到此页面。
例子
login.py
from flask import *app = Flask(__name__)@app.route('/')def home (): return render_template("home.html")@app.route('/login')def login(): return render_template("login.html"); @app.route('/validate', methods = ["POST"])def validate(): if request.method == 'POST' and request.form['pass'] == 'jtp':return redirect(url_for("success")) return redirect(url_for("login"))@app.route('/success')def success(): return "logged in successfully"if __name__ == '__main__': app.run(debug = True)

home.html
< html> < head> < title> home< /title> < /head> < body> < h3> Welcome to the website< /h3> < a href = "http://www.srcmini.com/login"> login< /a> < br> < /html>

login.html
< html> < head> < title> login< /title> < /head> < body> < form method = "post" action = "http://localhost:5000/validate"> < table> < tr> < td> Email< /td> < td> < input type = 'email' name = 'email'> < /td> < /tr> < tr> < td> Password< /td> < td> < input type = 'password' name = 'pass'> < /td> < /tr> < tr> < td> < input type = "submit" value = "http://www.srcmini.com/Submit"> < /td> < /tr> < /table> < /form> < /body> < /html>

在上面的示例中, URL’ /’ 包含登录页面的链接, 如下图所示。
Python Flask重定向和错误处理

文章图片
下图所示的登录页面包含提示用户输入电子邮件和密码, 并且提交按钮将用户重定向到URL / validate。
Python Flask重定向和错误处理

文章图片
在这种情况下, 由于我输入了不等于’ jtp’ 的随机密码, 因此用户仅恢复到该页面(登录页面)。
但是, 仅当用户输入的密码为” jtp” 时, 用户才被重定向到URL /成功。下图显示了URL http:// localhost:5000 /成功(成功登录时生成)。
Python Flask重定向和错误处理

文章图片
标准HTTP代码 以下HTTP代码是标准化的。
  • HTTP_300_MULTIPLE_CHOICES
  • HTTP_301_MOVED_PERMANENTLY
  • HTTP_302_FOUND
  • HTTP_303_SEE_OTHER
  • HTTP_304_NOT_MODIFIED
  • HTTP_305_USE_PROXY
  • HTTP_306_RESERVED
  • HTTP_307_TEMPORARY_REDIRECT
默认状态码为HTTP_302_FOUND。
abort()函数 abort()函数用于处理客户端请求中涉及错误的情况, 例如错误请求, 未经授权的访问等等。但是, 由于发生错误, 将提及错误代码。
下面给出了使用abort()函数的语法。
Flask.abort(code)

根据指定的错误, 我们可以提及以下错误代码。
  • 400:不好的要求
  • 401:未经授权的访问
  • 403:禁止
  • 404:找不到
  • 406:不可接受
  • 415:用于不受支持的媒体类型
  • 429:请求过多
让我们修改上述示例中的脚本login.py, 并在用户输入任何随机密码的情况下, 将abort()函数与错误代码401(用于未授权访问)一起使用。
例子
from flask import *app = Flask(__name__)@app.route('/')def home (): return render_template("home.html")@app.route('/login')def login(): return render_template("login.html"); @app.route('/validate', methods = ["POST"])def validate(): if request.method == 'POST' and request.form['pass'] == 'jtp':return redirect(url_for("success")) else:abort(401)@app.route('/success')def success(): return "logged in successfully"if __name__ == '__main__': app.run(debug = True)

如果密码错误, 它将产生以下结果。
Python Flask重定向和错误处理

文章图片
【Python Flask重定向和错误处理】在这里, 由于用户已请求对资源进行未经授权的访问, 因此我们使用了错误代码401。我们可以根据错误情况将其更改为任何代码。

    推荐阅读