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

 更新时间:2019年08月01日 10:36:24   作者:EthanSun  
这篇文章主要介绍了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程序设计有所帮助。

相关文章

  • 解决Python中字符串和数字拼接报错的方法

    解决Python中字符串和数字拼接报错的方法

    相信很多的新手朋友都会碰到python连接字符串和数字的问题,因为python是强类型的语言,如果你把一个字符串和数字直接做连接的操作的话,就会直接报错的,今天就给大家说下字符串和数字拼接的问题,有需要的朋友们可以参考借鉴。
    2016-10-10
  • python Airtest自动化测试工具的的使用

    python Airtest自动化测试工具的的使用

    本文主要介绍了python Airtest自动化测试工具的的使用,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-02-02
  • 如何将yolov5中的PANet层改为BiFPN详析

    如何将yolov5中的PANet层改为BiFPN详析

    现在yolov5的neck用的是PANet,在efficient论文中提出了BiFPN结构,还有更加不错的性能,下面这篇文章主要给大家介绍了关于如何将yolov5中的PANet层改为BiFPN的相关资料,需要的朋友可以参考下
    2022-06-06
  • Python自动化办公之Word转PDF的实现

    Python自动化办公之Word转PDF的实现

    这篇文章主要为大家详细介绍一下如何在 windows、mac、linux 三种系统中都可以生成 PDF 的解决方案,文中的示例代码讲解详细,需要的可以参考一下
    2022-05-05
  • Python SQLAlchemy入门教程(基本用法)

    Python SQLAlchemy入门教程(基本用法)

    这篇文章主要介绍了Python SQLAlchemy入门教程,本文通过实例主要给大家讲解了python SQLAlchemy基本用法,需要的朋友可以参考下
    2019-11-11
  • 详解Swift中属性的声明与作用

    详解Swift中属性的声明与作用

    Swift中的属性可以被分为存储属性和计算属性,本文将为大家详解Swift中属性的声明与作用,需要的朋友可以参考下
    2016-06-06
  • 利用pandas进行数据清洗的方法

    利用pandas进行数据清洗的方法

    本文主要介绍了利用pandas进行数据清洗的方法,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-09-09
  • Python + Tkinter连接本地MySQL数据库简单实现注册登录

    Python + Tkinter连接本地MySQL数据库简单实现注册登录

    这篇文章主要介绍了Python + Tkinter连接本地MySQL数据库简单实现注册登录。下面文章着情介绍,需要的小伙伴可以参考一下
    2022-01-01
  • 如何在代码中安装 Python 模块

    如何在代码中安装 Python 模块

    这篇文章主要介绍了如何在代码中安装Python模块,本文结合示例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2023-06-06
  • 对numpy中数组元素的统一赋值实例

    对numpy中数组元素的统一赋值实例

    下面小编就为大家分享一篇对numpy中数组元素的统一赋值实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04

最新评论