Flask框架重定向,错误显示,Responses响应及Sessions会话操作示例


Posted in Python onAugust 01, 2019

本文实例讲述了Flask框架重定向,错误显示,Responses响应及Sessions会话操作。分享给大家供大家参考,具体如下:

重定向和错误显示

将用户重定向到另一个端点,使用redirect(), 要提前中止错误请求,请使用abort()函数

from flask import abort, redirect, url_for
@app.route('/')
def index():
  return redirect(url_for('login'))
@app.route('/login')
def login():
  abort(401)
  this_is_never_executed()

默认情况下,会为每个错误代码显示黑白错误页面,如果要自定义错误页面,请使用errorhandler() 装饰器.

Responses

  1. 如果返回了正确类型的响应对象,则直接从视图返回。
  2. 如果是字符串,则使用该数据和默认参数创建响应对象。
  3. 如果返回元组,则元组中的项可以提供额外信息。这样的元组必须是这样的形式,或者至少有一个项必须在元组中。该值将覆盖状态代码,可以是其他标头值的列表或字典。(response, status, headers)或者是(response, headers)

如果要在视图中获取生成的响应对象,可以使用make_response() 函数

假设你有如下视图:

@app.errorhandler(404)
def not_found(error):
  return render_template('error.html'), 404

使用make_response()包含返回表达式,获取响应对象并修改它,然后返回它

@app.errorhandler(404)
def not_found(error):
  resp = make_response(render_template('error.html'), 404)
  resp.headers['X-Something'] = 'A value'
  return resp

Sessions会话追踪

session在cookie的基础上实现的,并以加密方式对cookie进行签名

要使用sessions,必须要设置私钥,以下是简单示例:

from flask import Flask, session, redirect, url_for, escape, request
app = Flask(__name__)
# Set the secret key to some random bytes. Keep this really secret!
app.secret_key = b'_5#y2L"F4Q8z\n\xec]/'
@app.route('/')
def index():
  if 'username' in session:
    return 'Logged in as %s' % escape(session['username'])
  return 'You are not logged in'
@app.route('/login', methods=['GET', 'POST'])
def login():
  if request.method == 'POST':
    session['username'] = request.form['username']
    return redirect(url_for('index'))
  return '''
    <form method="post">
      <p><input type=text name=username>
      <p><input type=submit value=Login>
    </form>
  '''
@app.route('/logout')
def logout():
  # remove the username from the session if it's there
  session.pop('username', None)
  return redirect(url_for('index'))

希望本文所述对大家基于flask框架的Python程序设计有所帮助。

Python 相关文章推荐
python3+PyQt5实现拖放功能
Apr 24 Python
python numpy元素的区间查找方法
Nov 14 Python
Python对HTML转义字符进行反转义的实现方法
Apr 28 Python
利用Python的sympy包求解一元三次方程示例
Nov 22 Python
python函数声明和调用定义及原理详解
Dec 02 Python
win10下python2和python3共存问题解决方法
Dec 23 Python
Python基于百度AI实现OCR文字识别
Apr 02 Python
django rest framework 自定义返回方式
Jul 12 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
Jul 30 Python
详解selenium + chromedriver 被反爬的解决方法
Oct 28 Python
Python3.9.0 a1安装pygame出错解决全过程(小结)
Feb 02 Python
Python中tkinter的用户登录管理的实现
Apr 22 Python
python对csv文件追加写入列的方法
Aug 01 #Python
Django Aggregation聚合使用方法解析
Aug 01 #Python
Flask教程之重定向与错误处理实例分析
Aug 01 #Python
python gdal安装与简单使用
Aug 01 #Python
Django模型修改及数据迁移实现解析
Aug 01 #Python
Django 大文件下载实现过程解析
Aug 01 #Python
python爬虫刷访问量 2019 7月
Aug 01 #Python
You might like
codeigniter集成ucenter1.6双向通信的解决办法
2014/06/12 PHP
Wordpress ThickBox 添加“查看原图”效果代码
2010/12/11 Javascript
基于jquery实现图片广告轮换效果代码
2011/07/07 Javascript
jquery和ajax的关系详细介绍
2013/11/29 Javascript
深入探究使JavaScript动画流畅的一些方法
2015/06/30 Javascript
jquery实现像栅栏一样左右滑出式二级菜单效果代码
2015/08/24 Javascript
js点击文本框后才加载验证码实例代码
2015/10/20 Javascript
jQuery如何使用自动触发事件trigger
2015/11/29 Javascript
ajax在兼容模式下失效的快速解决方法
2016/03/22 Javascript
JS瀑布流实现方法实例分析
2016/12/19 Javascript
JavaScript中Hoisting详解 (变量提升与函数声明提升)
2017/08/18 Javascript
template.js前端模板引擎使用详解
2017/10/10 Javascript
React路由管理之React Router总结
2018/05/10 Javascript
原生JS实现的简单小钟表功能示例
2018/08/30 Javascript
浅谈关于iview表单验证的问题
2018/09/29 Javascript
vue中typescript装饰器的使用方法超实用教程
2019/06/17 Javascript
Vue中的循环及修改差值表达式的方法
2019/08/29 Javascript
vue项目中定义全局变量、函数的几种方法
2019/11/08 Javascript
Node.js API详解之 repl模块用法实例分析
2020/05/25 Javascript
小程序角标的添加及绑定购物车数量进行实时更新的实现代码
2020/12/07 Javascript
python实现将内容分行输出
2015/11/05 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
python爬虫爬取某站上海租房图片
2018/02/04 Python
使用pytorch进行图像的顺序读取方法
2018/07/27 Python
用Python编写一个高效的端口扫描器的方法
2018/12/20 Python
基于MATLAB和Python实现MFCC特征参数提取
2019/08/13 Python
python图像处理模块Pillow的学习详解
2019/10/09 Python
利用python实现冒泡排序算法实例代码
2019/12/01 Python
如何使用Python调整图像大小
2020/09/26 Python
如何编写python的daemon程序
2021/01/07 Python
CSS3样式linear-gradient的使用实例
2017/01/16 HTML / CSS
利用CSS3实现的文字定时向上滚动
2016/08/29 HTML / CSS
民政工作个人总结
2015/02/28 职场文书
撤回我也能看到!教你用Python制作微信防撤回脚本
2021/06/11 Python
mongoDB数据库索引快速入门指南
2022/03/23 MongoDB
React自定义hook的方法
2022/06/25 Javascript