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判断IP地址合法性的方法实例
Mar 13 Python
Python中设置变量访问权限的方法
Apr 27 Python
Python实现的爬虫功能代码
Jun 24 Python
Python实现的计数排序算法示例
Nov 29 Python
Python 3.x 安装opencv+opencv_contrib的操作方法
Apr 02 Python
Python 串口读写的实现方法
Jun 12 Python
关于pytorch中网络loss传播和参数更新的理解
Aug 20 Python
Python 批量刷博客园访问量脚本过程解析
Aug 30 Python
Python使用random模块生成随机数操作实例详解
Sep 17 Python
python多项式拟合之np.polyfit 和 np.polyld详解
Feb 18 Python
Python多线程正确用法实例解析
May 30 Python
关于python中模块和重载的问题
Nov 02 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 5.0对象模型深度探索之绑定
2006/09/05 PHP
解析PHP实现多进程并行执行脚本
2013/06/18 PHP
php实现随机生成易于记忆的密码
2015/06/19 PHP
启用Csrf后POST数据时出现的400错误
2015/07/05 PHP
Yii支持多域名cors原理的实现
2018/12/05 PHP
sina的lightbox效果。
2007/01/09 Javascript
测试JavaScript字符串处理性能的代码
2009/12/07 Javascript
jquery 多行滚动代码(附详细解释)
2010/06/17 Javascript
HTML Dom与Css控制方法
2010/10/25 Javascript
如何设置一定时间内只能发送一次请求
2014/02/28 Javascript
javascript实现禁止右键和F12查看源代码
2014/12/26 Javascript
javascript封装 Cookie 应用接口
2015/08/07 Javascript
JS全局变量和局部变量最新解析
2016/06/24 Javascript
Vuex简单入门
2017/04/19 Javascript
vue中SPA单页面应用程序详解
2017/11/07 Javascript
js数组方法reduce经典用法代码分享
2018/01/07 Javascript
详解create-react-app 自定义 eslint 配置
2018/06/07 Javascript
JS实现的获取银行卡号归属地及银行卡类型操作示例
2019/01/08 Javascript
深入了解JavaScript代码覆盖
2019/06/13 Javascript
精读《Vue3.0 Function API》
2020/05/20 Javascript
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Django中的文件的上传的几种方式
2018/07/23 Python
在Python 中实现图片加框和加字的方法
2019/01/26 Python
Python I/O与进程的详细讲解
2019/03/08 Python
python TF-IDF算法实现文本关键词提取
2019/05/29 Python
Python二进制文件读取并转换为浮点数详解
2019/06/25 Python
python 实现二维字典的键值合并等函数
2019/12/06 Python
Tensorflow 定义变量,函数,数值计算等名字的更新方式
2020/02/10 Python
Python实现发票自动校核微信机器人的方法
2020/05/22 Python
Antonioli美国在线商店:时尚前卫奢华
2019/07/29 全球购物
最新远光软件笔试题面试题内容
2013/11/08 面试题
汽车检测与维修应届毕业生求职信
2013/10/19 职场文书
2014教师个人自我评价范文
2014/09/13 职场文书
2014年教师学期工作总结
2014/11/08 职场文书
劳动纠纷调解协议书格式
2014/11/30 职场文书
2019邀请函格式及范文
2019/05/20 职场文书