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使用三角迭代计算圆周率PI的方法
Mar 20 Python
python音频处理用到的操作的示例代码
Oct 27 Python
python Pandas 读取txt表格的实例
Apr 29 Python
Python 实现引用其他.py文件中的类和类的方法
Apr 29 Python
python删除文本中行数标签的方法
May 31 Python
一行代码让 Python 的运行速度提高100倍
Oct 08 Python
Python3实现的简单三级菜单功能示例
Mar 12 Python
pandas的连接函数concat()函数的具体使用方法
Jul 09 Python
django项目登录中使用图片验证码的实现方法
Aug 15 Python
Python 单例设计模式用法实例分析
Sep 23 Python
Pandas数据离散化原理及实例解析
Nov 16 Python
Python持续监听文件变化代码实例
Jul 22 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
PHP伪静态页面函数附使用方法
2008/06/20 PHP
有关PHP中MVC的开发经验分享
2012/05/17 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
Ajax+Json 级联菜单实现代码
2009/10/27 Javascript
Script的加载方法小结
2011/01/12 Javascript
DWZ table的原生分页浅谈
2013/03/01 Javascript
深入理解JavaScript是如何实现继承的
2013/12/12 Javascript
node.js WEB开发中图片验证码的实现方法
2014/06/03 Javascript
浅谈JavaScript 中有关时间对象的方法
2016/08/15 Javascript
Vue.js开发环境搭建
2016/11/10 Javascript
jQuery Easyui datagrid行内实现【添加】、【编辑】、【上移】、【下移】
2016/12/19 Javascript
js手机号批量滚动抽奖实现代码
2020/04/17 Javascript
浅谈Javascript事件对象
2017/02/05 Javascript
ubuntu编译nodejs所需的软件并安装
2017/09/12 NodeJs
微信小程序实现留言板功能
2018/11/02 Javascript
vue 移动端注入骨架屏的配置方法
2019/06/25 Javascript
vue+elementui实现点击table中的单元格触发事件--弹框
2020/07/18 Javascript
vue props default Array或是Object的正确写法说明
2020/07/30 Javascript
Vue实现点击导航栏当前标签后变色功能
2020/08/19 Javascript
python字符串的常用操作方法小结
2016/05/21 Python
值得收藏,Python 开发中的高级技巧
2018/11/23 Python
python实现树的深度优先遍历与广度优先遍历详解
2019/10/26 Python
python tqdm 实现滚动条不上下滚动代码(保持一行内滚动)
2020/02/19 Python
Python3开发环境搭建详细教程
2020/06/18 Python
HTML5 script元素async、defer异步加载使用介绍
2013/08/23 HTML / CSS
前端使用canvas生成盲水印的加密解密的实现
2020/12/16 HTML / CSS
Diesel美国网上商店:意大利牛仔时装品牌
2020/12/10 全球购物
18岁生日感言
2014/01/12 职场文书
高三英语教学反思
2014/01/13 职场文书
广告学专业求职信
2014/06/19 职场文书
2016大学生就业指导课心得体会
2016/01/15 职场文书
《刷子李》教学反思
2016/02/20 职场文书
详解JS ES6编码规范
2021/05/07 Javascript
浅谈pytorch中的dropout的概率p
2021/05/27 Python
一篇文章学会Vue中间件管道
2021/06/20 Vue.js
Apache Hudi集成Spark SQL操作hide表
2022/03/31 Servers