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


Posted in Python onAugust 01, 2019

本文实例讲述了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实现划词翻译
Apr 23 Python
python进阶教程之异常处理
Aug 30 Python
Python记录详细调用堆栈日志的方法
May 05 Python
Python入门_浅谈数据结构的4种基本类型
May 16 Python
python计算auc指标实例
Jul 13 Python
Python简单生成随机姓名的方法示例
Dec 27 Python
检测python爬虫时是否代理ip伪装成功的方法
Jul 12 Python
Python列表元素常见操作简单示例
Oct 25 Python
关于Pytorch MaxUnpool2d中size操作方式
Jan 03 Python
Keras—embedding嵌入层的用法详解
Jun 10 Python
关于python3.7安装matplotlib始终无法成功的问题的解决
Jul 28 Python
mac安装python3后使用pip和pip3的区别说明
Sep 01 Python
python gdal安装与简单使用
Aug 01 #Python
Django模型修改及数据迁移实现解析
Aug 01 #Python
Django 大文件下载实现过程解析
Aug 01 #Python
python爬虫刷访问量 2019 7月
Aug 01 #Python
用Cython加速Python到“起飞”(推荐)
Aug 01 #Python
Python爬取视频(其实是一篇福利)过程解析
Aug 01 #Python
flask框架jinja2模板与模板继承实例分析
Aug 01 #Python
You might like
linux php mysql数据库备份实现代码
2009/03/10 PHP
PHP遍历二维数组的代码
2011/04/22 PHP
PHP实现异步调用方法研究与分享
2011/10/27 PHP
Eclipse的PHP插件PHPEclipse安装和使用
2014/07/20 PHP
PHP根据树的前序遍历和中序遍历构造树并输出后序遍历的方法
2017/11/10 PHP
PHP判断函数是否被定义的方法
2019/06/21 PHP
PHP学习记录之常用的魔术常量详解
2019/12/12 PHP
jquery 全局AJAX事件使用代码
2010/11/05 Javascript
JavaScript和CSS通过expression实现Table居中显示
2013/06/28 Javascript
checkbox使用示例
2013/08/23 Javascript
Jquery 改变radio/checkbox选中状态,获取选中的值(示例代码)
2013/12/12 Javascript
基于jQuery实现复选框的全选 全不选 反选功能
2014/11/24 Javascript
通过BootStrap-select插件 js jQuery控制select属性变化
2017/01/03 Javascript
js随机生成一个验证码
2017/06/01 Javascript
vue element项目引入icon图标的方法
2018/06/06 Javascript
在vue项目中,将juery设置为全局变量的方法
2018/09/25 Javascript
实例详解vue中的$root和$parent
2019/04/29 Javascript
node.js使用yargs处理命令行参数操作示例
2020/02/11 Javascript
Python解析nginx日志文件
2015/05/11 Python
Caffe均值文件mean.binaryproto转mean.npy的方法
2018/07/09 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
Python求解正态分布置信区间教程
2019/11/20 Python
django商品分类及商品数据建模实例详解
2020/01/03 Python
flask开启多线程的具体方法
2020/08/02 Python
Python学习工具jupyter notebook安装及用法解析
2020/10/23 Python
浅析HTML5的WebSocket与服务器推送事件
2016/02/19 HTML / CSS
AmazeUI导航的示例代码
2020/08/14 HTML / CSS
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
会计实习期自我鉴定
2013/10/06 职场文书
学前教育毕业生自荐信
2013/10/29 职场文书
质监局领导班子践行群众路线整改方案
2014/10/26 职场文书
2014年班长个人工作总结
2014/11/14 职场文书
2014年协会工作总结
2014/11/22 职场文书
解决Pytorch修改预训练模型时遇到key不匹配的情况
2021/06/05 Python
css中z-index: 0和z-index: auto的区别
2021/08/23 HTML / CSS
Python干货实战之八音符酱小游戏全过程详解
2021/10/24 Python