python 重定向 网址错_Python Flask重定向和错误处理

本文概述

Flask类提供了redirect()函数, 该函数将用户重定向到具有指定状态代码的某些指定URL。

HTTP状态代码是服务器对浏览器请求的响应。当我们访问网站时, 请求将发送到服务器, 然后服务器用三位数代码(HTTP状态代码)响应浏览器的请求。此状态代码也代表错误。

下面给出了使用redirect()函数的语法。

Flask.redirect(, , )

它接受以下参数。

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

home

Welcome to the website

login

login.html

login
Email
Password

在上面的示例中, URL’/’包含登录页面的链接, 如下图所示。

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

在这种情况下, 由于我输入了不等于’jtp’的随机密码, 因此用户仅恢复到该页面(登录页面)。

但是, 仅当用户输入的密码为” jtp”时, 用户才被重定向到URL /成功。下图显示了URL http:// localhost:5000 /成功(成功登录时生成)。

标准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)

如果密码错误, 它将产生以下结果。

在这里, 由于用户已请求对资源进行未经授权的访问, 因此我们使用了错误代码401。我们可以根据错误情况将其更改为任何代码。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值