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 相关文章推荐
python访问sqlserver示例
Feb 10 Python
Python升级提示Tkinter模块找不到的解决方法
Aug 22 Python
Python实现队列的方法
May 26 Python
Python处理文本换行符实例代码
Feb 03 Python
Python中py文件引用另一个py文件变量的方法
Apr 29 Python
详解Python中的四种队列
May 21 Python
解决Pycharm下面出现No R interpreter defined的问题
Oct 29 Python
python 实现屏幕录制示例
Dec 23 Python
完美解决jupyter由于无法import新包的问题
May 26 Python
Python json解析库jsonpath原理及使用示例
Nov 25 Python
PyMongo 查询数据的实现
Jun 28 Python
Python使用plt.boxplot()函数绘制箱图、常用方法以及含义详解
Aug 14 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
php 数组的一个悲剧?
2011/05/11 PHP
PHP实现图片防盗链破解操作示例【解决图片防盗链问题/反向代理】
2020/05/29 PHP
Jquery iframe内部出滚动条
2010/02/11 Javascript
Jquery下的26个实用小技巧(jQuery tips, tricks &amp; solutions)
2010/03/01 Javascript
随鼠标上下滚动的jquery代码
2013/12/05 Javascript
jquery如何判断表格同一列不同行input数据是否重复
2014/05/14 Javascript
一个判断抢购时间是否到达的简单的js函数
2014/06/23 Javascript
JQuery实现简单的服务器轮询效果实例
2016/03/31 Javascript
javascript运算符语法全面概述
2016/07/14 Javascript
jQuery实现公告新闻自动滚屏效果实例代码
2016/07/14 Javascript
js调用父框架函数与弹窗调用父页面函数的简单方法
2016/11/01 Javascript
利用node实现一个批量重命名文件的函数
2017/12/21 Javascript
Angular5中调用第三方js插件的方法
2018/02/26 Javascript
微信小程序实现笑脸评分功能
2018/11/03 Javascript
es6函数之rest参数用法实例分析
2020/04/18 Javascript
JavaScript实现答题评分功能页面
2020/06/24 Javascript
python ElementTree 基本读操作示例
2009/04/09 Python
在Python下尝试多线程编程
2015/04/28 Python
Python实现的旋转数组功能算法示例
2019/02/23 Python
python快排算法详解
2019/03/04 Python
Python3利用openpyxl读写Excel文件的方法实例
2021/02/03 Python
美国的Eastbay旗下的运动款子品牌:Final-Score
2018/01/01 全球购物
联想西班牙官网:Lenovo西班牙
2018/08/28 全球购物
网站域名和主机:Domain.com
2019/04/01 全球购物
Trip.com澳大利亚:在线旅行社
2019/12/01 全球购物
超市优秀员工获奖感言
2014/08/15 职场文书
2014小学生国庆65周年演讲稿
2014/09/21 职场文书
质监局领导班子对照检查材料思想汇报
2014/09/27 职场文书
教师四风自我剖析材料
2014/09/30 职场文书
仓管员岗位职责
2015/02/03 职场文书
逃课检讨书范文
2015/05/06 职场文书
报案材料怎么写
2015/05/25 职场文书
教师节作文之小学四年级
2019/09/03 职场文书
python opencv将多个图放在一个窗口的实例详解
2022/02/28 Python
Python实现Matplotlib,Seaborn动态数据图
2022/05/06 Python
Redis基本数据类型String常用操作命令
2022/06/01 Redis