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中类的一些方法分析
Sep 25 Python
python cx_Oracle的基础使用方法(连接和增删改查)
Nov 19 Python
python matplotlib坐标轴设置的方法
Dec 05 Python
python实现数据预处理之填充缺失值的示例
Dec 22 Python
python装饰器-限制函数调用次数的方法(10s调用一次)
Apr 21 Python
Python实现的从右到左字符串替换方法示例
Jul 06 Python
python把ipynb文件转换成pdf文件过程详解
Jul 09 Python
Python中zip()函数的简单用法举例
Sep 02 Python
Python绘制热力图示例
Sep 27 Python
python super用法及原理详解
Jan 20 Python
django 文件上传功能的相关实例代码(简单易懂)
Jan 22 Python
Keras实现支持masking的Flatten层代码
Jun 16 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分页类代码
2013/04/02 PHP
PHP中auto_prepend_file与auto_append_file用法实例分析
2014/09/22 PHP
学习php设计模式 php实现备忘录模式(Memento)
2015/12/09 PHP
PHP通过CURL实现定时任务的图片抓取功能示例
2016/10/03 PHP
php实现的后台表格分页功能示例
2017/10/23 PHP
解决windows上php xdebug 无法调试的问题
2020/02/19 PHP
PHP与Web页面的交互示例详解一
2020/08/04 PHP
用 JavaScript 迁移目录
2006/12/18 Javascript
javascript来定义类的规范小结
2010/11/19 Javascript
jtable列中自定义button示例代码
2013/11/21 Javascript
js整数字符串转换为金额类型数据(示例代码)
2013/12/26 Javascript
Flash图片上传组件 swfupload使用指南
2015/03/14 Javascript
简介JavaScript中的italics()方法的使用
2015/06/08 Javascript
jQuery实现在最后一个元素之前插入新元素的方法
2015/07/18 Javascript
JS实现pasteHTML兼容ie,firefox,chrome的方法
2016/06/22 Javascript
angular十大常见问题
2017/03/07 Javascript
vue如何实现observer和watcher源码解析
2017/03/09 Javascript
Vue.js基础学习之class与样式绑定
2017/03/20 Javascript
在vscode中统一vue编码风格的方法
2018/02/22 Javascript
基于vue和bootstrap实现简单留言板功能
2020/05/30 Javascript
原生JS实现微信通讯录
2020/06/18 Javascript
Python命令启动Web服务器实例详解
2017/02/23 Python
python 输出上个月的月末日期实例
2018/04/11 Python
python numpy 常用随机数的产生方法的实现
2019/08/21 Python
python selenium循环登陆网站的实现
2019/11/04 Python
如何通过命令行进入python
2020/07/06 Python
Python多线程的退出控制实现
2020/08/10 Python
美国现代家具购物网站:LexMod
2019/01/09 全球购物
房屋改造计划书
2014/01/10 职场文书
学校与家长安全责任书
2014/07/23 职场文书
实习生工作证明范本
2014/09/14 职场文书
2015欢度元旦标语口号
2014/12/09 职场文书
初中教师个人总结
2015/02/10 职场文书
财务稽核岗位职责
2015/04/13 职场文书
学习经验交流会演讲稿
2015/11/02 职场文书
vue实现省市区联动 element-china-area-data插件
2022/04/22 Vue.js