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 相关文章推荐
离线安装Pyecharts的步骤以及依赖包流程
Apr 23 Python
Python实现网站注册验证码生成类
Jun 08 Python
Python实现爬取需要登录的网站完整示例
Aug 19 Python
Python实现的求解最小公倍数算法示例
May 03 Python
python中使用iterrows()对dataframe进行遍历的实例
Jun 09 Python
python中cPickle类使用方法详解
Aug 27 Python
使用pandas把某一列的字符值转换为数字的实例
Jan 29 Python
windows下python虚拟环境virtualenv安装和使用详解
Jul 16 Python
Django之PopUp的具体实现方法
Aug 31 Python
python从zip中删除指定后缀文件(推荐)
Dec 05 Python
python关闭占用端口方式
Dec 17 Python
python爬虫使用requests发送post请求示例详解
Aug 05 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
玩转图像函数库―常见图形操作
2006/09/03 PHP
PHP脚本的10个技巧(3)
2006/10/09 PHP
PHP中文处理 中文字符串截取(mb_substr)和获取中文字符串字数
2011/11/10 PHP
php通过获取头信息判断图片类型的方法
2015/06/26 PHP
php微信公众号开发之现金红包
2018/04/16 PHP
jQuery的one()方法用法实例
2015/01/19 Javascript
javascript中callee与caller的区别分析
2015/04/20 Javascript
Backbone.js的Hello World程序实例
2015/06/19 Javascript
jQuery获得字体颜色16位码的方法
2016/02/20 Javascript
JavaScript编程学习技巧汇总
2016/02/21 Javascript
微信小程序 动态的设置图片的高度和宽度详解及实例代码
2017/02/24 Javascript
详解JavaScript按概率随机生成事件
2017/08/02 Javascript
react-native 圆弧拖动进度条实现的示例代码
2018/04/12 Javascript
送你43道JS面试题(收藏)
2019/06/17 Javascript
Openlayers测量距离与面积的实现方法
2020/09/25 Javascript
Python中无限元素列表的实现方法
2014/08/18 Python
Python实现list反转实例汇总
2014/11/11 Python
Python搭建HTTP服务器和FTP服务器
2017/03/09 Python
python OpenCV学习笔记之绘制直方图的方法
2018/02/08 Python
python安装requests库的实例代码
2019/06/25 Python
python之拟合的实现
2019/07/19 Python
pytorch 在sequential中使用view来reshape的例子
2019/08/20 Python
python实现翻译word表格小程序
2020/02/27 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
Python pickle模块常用方法代码实例
2020/10/10 Python
Django框架请求生命周期实现原理
2020/11/13 Python
css3实现背景图片拉伸效果像桌面壁纸一样
2013/08/19 HTML / CSS
法律专业应届本科毕业生求职信
2013/10/25 职场文书
党员公开承诺书范文
2014/03/25 职场文书
中国文明网向国旗敬礼寄语大全
2014/09/27 职场文书
大学生迟到检讨书500字
2014/10/17 职场文书
大学四年个人总结
2015/03/03 职场文书
公司行政助理岗位职责
2015/04/11 职场文书
2015年为民办实事工作总结
2015/05/26 职场文书
幼儿园教师暑期培训心得体会
2016/01/09 职场文书
tensorflow中的数据类型dtype用法说明
2021/05/26 Python