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基于socket实现网络广播的方法
Apr 29 Python
Python实现监控程序执行时间并将其写入日志的方法
Jun 30 Python
Python读大数据txt
Mar 28 Python
python装饰器初探(推荐)
Jul 21 Python
Python 序列的方法总结
Oct 18 Python
Python实现的排列组合、破解密码算法示例
Apr 12 Python
Python基础学习之类与实例基本用法与注意事项详解
Jun 17 Python
简单了解Django ContentType内置组件
Jul 23 Python
Python对列表的操作知识点详解
Aug 20 Python
PyQt5 文本输入框自动补全QLineEdit的实现示例
May 13 Python
Python爬虫之Selenium鼠标事件的实现
Dec 04 Python
Python利用imshow制作自定义渐变填充柱状图(colorbar)
Dec 10 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执行速度全攻略(上)
2006/10/09 PHP
PHP代码重构方法漫谈
2018/04/17 PHP
ajax无刷新动态调用股票信息(改良版)
2008/11/01 Javascript
JavaScript 组件之旅(三):用 Ant 构建组件
2009/10/28 Javascript
js返回上一页并刷新代码整理
2012/12/21 Javascript
JS获取当前网址、主机地址项目根路径
2013/11/19 Javascript
验证码在IE中不刷新而谷歌等浏览器正常的解决方案
2014/03/18 Javascript
JS实现根据当前文字选择返回被选中的文字
2014/05/21 Javascript
JavaScript实现信用卡校验方法
2015/04/07 Javascript
js+HTML5实现canvas多种颜色渐变效果的方法
2015/06/05 Javascript
AngularJS使用指令增强标准表单元素功能
2016/07/01 Javascript
纯js和css完成贪吃蛇小游戏demo
2016/09/01 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
layer实现关闭弹出层刷新父界面功能详解
2017/11/15 Javascript
jquery树形插件zTree高级使用详解
2019/08/16 jQuery
JavaScript交换两个变量方法实例
2019/11/25 Javascript
openlayers实现地图测距测面
2020/09/25 Javascript
微信跳一跳小游戏python脚本
2018/01/05 Python
Sanic框架异常处理与中间件操作实例分析
2018/07/16 Python
python调用matlab的m自定义函数方法
2019/02/18 Python
Python3.5内置模块之random模块用法实例分析
2019/04/26 Python
在django view中给form传入参数的例子
2019/07/19 Python
pycharm创建scrapy项目教程及遇到的坑解析
2019/08/15 Python
python matplotlib实现将图例放在图外
2020/04/17 Python
python要安装在哪个盘
2020/06/15 Python
pytorch掉坑记录:model.eval的作用说明
2020/06/23 Python
澳大利亚领先的宠物用品商店:VetSupply
2017/09/08 全球购物
Roxy荷兰官方网站:冲浪、滑雪板、服装和配件
2019/10/22 全球购物
拖鞋店创业计划书
2014/01/15 职场文书
法人代表授权委托书
2014/04/08 职场文书
关于成绩下滑的自我检讨书
2014/09/20 职场文书
2015年毕业实习工作总结
2014/12/12 职场文书
毕业感言怎么写
2015/07/31 职场文书
2019年市场部个人述职报告(三篇)
2019/10/23 职场文书
修改MySQL的数据库引擎为INNODB的方法
2021/05/26 MySQL
聊聊配置 Nginx 访问与错误日志的问题
2022/05/25 Servers