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中list列表的赋值方法及遇到问题处理

    Python中list列表的赋值方法及遇到问题处理

    这篇文章主要介绍了Python中list列表的赋值方法及遇到问题处理,记录在列表list的赋值过程中遇到的问题,并对列表的拷贝相关知识进行汇总,需要的朋友可以参考一下
    2022-03-03
  • Python在字典中获取带权重的随机值实现方式

    Python在字典中获取带权重的随机值实现方式

    这篇文章主要介绍了Python在字典中获取带权重的随机值,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-11-11
  • python实现类之间的方法互相调用

    python实现类之间的方法互相调用

    下面小编就为大家分享一篇python实现类之间的方法互相调用,具有很的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-04-04
  • python reverse反转部分数组的实例

    python reverse反转部分数组的实例

    今天小编就为大家分享一篇python reverse反转部分数组的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-12-12
  • Python运行异常管理解决方案

    Python运行异常管理解决方案

    这篇文章主要介绍了Python运行异常管理解决方案,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-03-03
  • vscode autopep8无法格式化python代码问题解决

    vscode autopep8无法格式化python代码问题解决

    这篇文章主要为大家介绍了vscode autopep8无法格式化python代码问题解决,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪
    2023-09-09
  • Django关于admin的使用技巧和知识点

    Django关于admin的使用技巧和知识点

    在本篇文章里小编给大家整理的是关于Django的admin简单使用的相关知识点内容,需要的朋友们可以跟着学习下。
    2020-02-02
  • python内置函数breakpoint()与bytearray()示例详解

    python内置函数breakpoint()与bytearray()示例详解

    本文给大家分享的是python内置函数breakpoint()与bytearray()的相关资料,并给大家附上了详细代码,有需要的小伙伴可以参考下
    2017-04-04
  • Python中如何使用Matplotlib库绘制图形

    Python中如何使用Matplotlib库绘制图形

    Matplotlib是一个Python的2D绘图库,通过Matplotlib开发者可以仅需要几行代码,便可以生成绘图,直方图,功率谱,条形图,错误图,散点图等,这篇文章主要给大家介绍了Python中如何使用Matplotlib库绘制图形的相关资料
    2022-07-07
  • Python根据指定日期计算后n天,前n天是哪一天的方法

    Python根据指定日期计算后n天,前n天是哪一天的方法

    这篇文章主要介绍了Python根据指定日期计算后n天,前n天是哪一天的方法,涉及Python日期与时间计算相关操作技巧,需要的朋友可以参考下
    2018-05-05

最新评论