当前位置: 首页 > 编程笔记 >

Flask教程之重定向与错误处理实例分析

严项明
2023-03-14
本文向大家介绍Flask教程之重定向与错误处理实例分析,包括了Flask教程之重定向与错误处理实例分析的使用技巧和注意事项,需要的朋友参考一下

本文实例讲述了Flask教程之重定向与错误处理。分享给大家供大家参考,具体如下:

Flask类有一个redirect()方法. 当我们调用它时, 它会返回一个响应对象并且按指定的状态码将用户重定向到另一个位置.

redirect()方法的原型如下:

Flask.redirect(location, statuscode, response)

在上面的函数中,

  • location 我们要重定向的URL位置
  • statuscode 状态码会在http头中发送给浏览器, 默认为302
  • response 用这个参数来初始化响应对象

下面是一些标准的状态码:

  • 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

重定向的状态码默认是302, 也就是已找到(found).

在下面的例子中, redirect()方法用于当登录失败的时候再次展示登录页面.

from flask import Flask, redirect, url_for, render_template, request
# Initialize the Flask application
app = Flask(__name__)
@app.route('/')
def index():
  return render_template('log_in.html')
@app.route('/login',methods = ['POST', 'GET'])
def login():
  if request.method == 'POST' and
  request.form['username'] == 'admin' :
  return redirect(url_for('success'))
  return redirect(url_for('index'))
@app.route('/success')
def success():
  return 'logged in successfully'
if __name__ == '__main__':
  app.run(debug = True)

Flask类有个abort()方法, 参数包括一个错误状态码.

Flask.abort(code)

  • 400 错误请求
  • 401 未授权请求
  • 403 禁止
  • 404 找不到资源
  • 406 不可接受
  • 415 未知媒体类型
  • 429 太多请求

我们来对上面代码中的login()函数做一点修改. 如果我们在登录失败时不重新展示登录页, 而是展示"未授权"页面, 那么我们需要把重定向那行代码替换为abort(401).

from flask import Flask, redirect, url_for, render_template, request, abort
app = Flask(__name__)
@app.route('/')
def index():
  return render_template('log_in.html')
@app.route('/login',methods = ['POST', 'GET'])
def login():
  if request.method == 'POST':
   if request.form['username'] == 'admin' :
     return redirect(url_for('success'))
   else:
     abort(401)
  else:
   return redirect(url_for('index'))
@app.route('/success')
def success():
  return 'logged in successfully'
if __name__ == '__main__':
  app.run(debug = True)

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

 类似资料:
  • Flask类有重定向函数。调用时,它会返回一个响应对象,并将用户重定向到具有指定状态码的另一个目标位置。 函数的原型如下 - 在上述函数中 - location 参数是响应应该被重定向的URL。 statuscode 参数发送到浏览器的头标,默认为。 response 参数用于实例化响应。 以下状态代码是标准化的 - HTTP_300_MULTIPLE_CHOICES HTTP_301_MOVED

  • 问题内容: 我想为Flask-restful API定义自定义错误处理。 在文档中建议的方法在这里是要做到以下几点: 现在,我发现这种格式非常吸引人,但是当发生某些异常时,我需要指定更多参数。例如,遇到时·,我要指定id不存在的内容。 目前,我正在执行以下操作: 当使用不存在的ID调用时,将返回以下JSON: 这工作正常,但我想改用错误处理。 问题答案: 根据文档 Flask-RESTful将在F

  • 主要内容:Maven依赖关系,重定向处理示例HttpClient自动处理所有类型的重定向,除了HTTP规范明确禁止的那些重定向需要用户干预。 请参阅其他(状态码)在POST上重定向,并且按照HTTP规范的要求将PUT请求转换为GET请求。 可以使用自定义重定向策略来放宽由HTTP规范施加的对POST方法的自动重定向的限制。 在下面的教程中,我们将使用来处理http重定向。 Maven依赖关系 我们使用maven来管理依赖关系,并使用Apac

  • 本文向大家介绍Go语言中错误处理实例分析,包括了Go语言中错误处理实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了Go语言中错误处理的方法。分享给大家供大家参考。具体分析如下: 错误是可以用字符串描述自己的任何东西。 主要思路是由预定义的内建接口类型 error,和其返回返回字符串窜的方法 Error 构成。 type error interface { Error() strin

  • 本文向大家介绍php中错误处理操作实例分析,包括了php中错误处理操作实例分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php中错误处理操作。分享给大家供大家参考,具体如下: 错误触发 有2种触发: 系统触发: E_NOTICE:提示性错误,比如使用不存在的变量或常量 E_WARNING:警告性错误,比如include载入一个不存在的文件 E_ERROR:致命错误,导致程序无法执行后

  • 我也不明白他们为什么要把它重定向到/error。而且很有可能是我少了什么,因为我只能把404S或200还给客户。 我的问题是他的解决方案似乎不适合1.3.0,因此我有以下请求流:假设我的代码抛出了一个。它将由我的之一处理 我的代码返回一个500,但它没有将它发送回客户机,而是尝试将它重定向到/error。如果我没有其他资源,它就会发回404。