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爬虫之爬虫框架Scrapy安装配置
Nov 06 Python
python字符串对其居中显示的方法
Jul 11 Python
Pycharm学习教程(2) 代码风格
May 02 Python
Python中字典的浅拷贝与深拷贝用法实例分析
Jan 02 Python
Flask模拟实现CSRF攻击的方法
Jul 24 Python
PyQt5基本控件使用之消息弹出、用户输入、文件对话框的使用方法
Aug 06 Python
python匿名函数的使用方法解析
Oct 10 Python
基于python3抓取pinpoint应用信息入库
Jan 08 Python
Pytorch 搭建分类回归神经网络并用GPU进行加速的例子
Jan 09 Python
Python StringIO及BytesIO包使用方法解析
Jun 15 Python
scrapy redis配置文件setting参数详解
Nov 18 Python
python中xlrd模块的使用详解
Feb 01 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
phpMyAdmin 安装及问题总结
2009/05/28 PHP
通过php快速统计某个数据库中每张表的数据量
2012/09/04 PHP
php5.2的curl-bug 服务器被php进程卡死问题排查
2016/09/19 PHP
PHP实现无限分类的实现方法
2016/11/14 PHP
Symfony2获取web目录绝对路径、相对路径、网址的方法
2016/11/14 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
PHP根据key删除数组中指定的元素
2019/02/28 PHP
图片自动缩小 点击放大
2008/07/07 Javascript
JavaScript中的类继承
2010/11/25 Javascript
jQuery EasyUI API 中文文档 - PropertyGrid属性表格
2011/11/18 Javascript
jQuery的attr与prop使用介绍
2013/10/10 Javascript
NodeJS使用jQuery选择器操作DOM
2015/02/13 NodeJs
JavaScript判断用户名和密码不能为空的实现代码
2016/05/16 Javascript
javascript使用闭包模拟对象的私有属性和方法
2016/10/05 Javascript
页面间固定参数,通过cookie传值的实现方法
2017/05/31 Javascript
JS实现小星星特效
2019/12/24 Javascript
在 Vue 中使用 JSX 及使用它的原因浅析
2020/02/10 Javascript
浅析 Vue 3.0 的组装式 API(一)
2020/08/31 Javascript
python避免死锁方法实例分析
2015/06/04 Python
Python操作Word批量生成文章的方法
2015/07/28 Python
python实现获取Ip归属地等信息
2016/08/27 Python
详谈Python基础之内置函数和递归
2017/06/21 Python
python基于物品协同过滤算法实现代码
2018/05/31 Python
python Web开发你要理解的WSGI & uwsgi详解
2018/08/01 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
2020/02/25 Python
Python 通过监听端口实现唯一脚本运行方式
2020/05/05 Python
django 数据库返回queryset实现封装为字典
2020/05/19 Python
Django Auth用户认证组件实现代码
2020/10/13 Python
python中scrapy处理项目数据的实例分析
2020/11/22 Python
世界上最大的街头服饰网站:Karmaloop
2017/02/04 全球购物
捷克鲜花配送:Florea.cz
2018/10/29 全球购物
社团2014年植树节活动总结
2014/03/11 职场文书
热爱祖国演讲稿
2014/05/04 职场文书
无犯罪记录证明
2014/09/19 职场文书
党校毕业个人总结
2015/02/28 职场文书
学生会自荐信
2019/05/16 职场文书