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 相关文章推荐
简单解析Django框架中的表单验证
Jul 17 Python
Python中easy_install 和 pip 的安装及使用
Jun 05 Python
python2与python3中关于对NaN类型数据的判断和转换方法
Oct 30 Python
对python requests发送json格式数据的实例详解
Dec 19 Python
Python获取、格式化当前时间日期的方法
Feb 10 Python
浅谈matplotlib.pyplot与axes的关系
Mar 06 Python
python3发送request请求及查看返回结果实例
Apr 30 Python
python如何建立全零数组
Jul 19 Python
Python字典的基础操作
Nov 01 Python
python文件与路径操作神器 pathlib
Apr 01 Python
Pillow图像处理库安装及使用
Apr 12 Python
Python软件包安装的三种常见方法
Jul 07 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 数据结构队列(SplQueue)和优先队列(SplPriorityQueue)简单使用实例
2015/05/12 PHP
php上传大文件失败的原因及应对策略
2015/10/20 PHP
PHP 中使用ajax时一些常见错误总结整理
2017/02/27 PHP
浅谈Javascript事件处理程序的几种方式
2012/06/27 Javascript
JSONP 跨域共享信息
2012/08/16 Javascript
JS组件Bootstrap dropdown组件扩展hover事件
2016/04/17 Javascript
Bootstrap优化站点资源、响应式图片、传送带使用详解3
2016/10/14 Javascript
JS调用某段SQL语句的方法
2016/10/20 Javascript
Angularjs的$http异步删除数据详解及实例
2017/07/27 Javascript
微信小程序实现倒计时60s获取验证码
2020/04/17 Javascript
React如何将组件渲染到指定DOM节点详解
2017/09/08 Javascript
微信小程序视图控件与bindtap之间的问题的解决
2019/04/08 Javascript
js实现倒计时秒杀效果
2020/03/25 Javascript
整理 node-sass 安装失败的原因及解决办法(小结)
2020/02/19 Javascript
浅谈js数组splice删除某个元素爬坑
2020/10/14 Javascript
JavaScript实现H5接金币功能(实例代码)
2021/02/22 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
[52:20]DOTA2-DPC中国联赛正赛 SAG vs XGBO3 第一场 3月5日
2021/03/11 DOTA
Python数据分析之如何利用pandas查询数据示例代码
2017/09/01 Python
python二维列表一维列表的互相转换实例
2018/07/02 Python
Pycharm新建模板默认添加个人信息的实例
2019/07/15 Python
Python大数据之网络爬虫的post请求、get请求区别实例分析
2019/11/16 Python
python3.x 生成3维随机数组实例
2019/11/28 Python
pytorch自定义二值化网络层方式
2020/01/07 Python
浅谈keras的深度模型训练过程及结果记录方式
2020/01/24 Python
keras中的backend.clip用法
2020/05/22 Python
Python3 pywin32模块安装的详细步骤
2020/05/26 Python
详解Canvas事件绑定
2018/06/27 HTML / CSS
西班牙汉普顿小姐:购买帆布鞋和太阳镜
2016/10/23 全球购物
技术总监个人的自我评价范文
2013/12/18 职场文书
高中生的自我鉴定范文
2014/01/24 职场文书
企业文化标语大全
2014/06/10 职场文书
活动总结结尾怎么写
2014/08/30 职场文书
法英专业大学生职业生涯规划书范文
2014/09/22 职场文书
结婚仪式主持词
2015/06/29 职场文书
浅谈mysql返回Boolean类型的几种情况
2021/06/04 MySQL