session、闪现、请求扩展
session
除请求对象之外,还有一个session对象。它允许你在不同请求储存特定用户的信息。它是在Cookies的基础上实现的,并且对,Cookies进行密钥签名要使用会话,你需要设置一个密钥。
(app.session_interface对象)
使用必须先设置一下密钥:app.secret_key = 'xxxx'
session['name'] = 'xxx' #放值
session['name'] # 取值
源码执行流程
1.save_session -- 响应的时候,把session中的值加密序列化到cookie中,返回到浏览器中
2.open_session -- 请求来了,从cookie中取值,反解生成session对象,以后再视图函数中直接用session就可以了
闪现(message)
#设置值
flash('我错了')
flash('超时错误',category='x1')
#取值:一旦取过一次,在另一个函数中再取就没了
get_flashed_messages()
get_flashed_messages(category_filter=['x1','x2'])
#使用场景:在某个位置放一个值,过来去取出来
from flask import Flask, get_flashed_messages, flash, url_for
app = Flask(__name__)
app.secret_key = 'xxxxadadad'
@app.route('/', methods=['GET', 'POST'])
def index():
# error='我出错了'
# url=url_for('test')
# url=url+'?error=%s'%error
# 使用flash实现,相当于在某个位置放了值
flash('我出错了', category='xxx')
url = url_for('test')
# return redirect(url)
return 'ok'
@app.route('/test/', methods=['GET', 'POST'])
def test():
# error=request.args.get('error')
# print(error)
# 使用闪现
# 从某个位置取出来值
error = get_flashed_messages(category_filter=['xxx'])
print(error)
return 'ok'
@app.route('/test2/', methods=['GET', 'POST'])
def test2():
# error=get_flashed_messages()
# print(error)
flash('我出错了')
return 'test2'
if __name__ == '__main__':
app.run()
请求扩展
before_request
类比Django中间件中的process_request,在请求收到之前绑定一个函数做一些事情
@app.before_request
def before_request():
print('来了')
after_request
类比Django中间件中的process_response,每一个请求之后绑定一个函数,如果请求没有异常
@app.after_request
def after_request(response):
print(type(response))
print('走了了')
return response
before_first_request(服务一启动,第一次请求会走,以后再也不走了)
@app.before_first_request
def first():
print('我的第一次')
teardown_request
无论如何都会走,即便出了异常
@app.teardown_request
def ter(e):
print(e)
print('无论如何都会走,即便出了异常')
errorhandler
路径存在时404,服务器内部错误500
@app.errorhandler(404)
def error_404(arg):
# return render_template('')
return '你迷路了'
template_global
标签
@app.template_global()
def sb(a1, a2):
return a1 + a2
#{{sb(1,2)}}
template_filter
过滤器
@app.template_filter()
def db(a1, a2, a3):
return a1 + a2 + a3
#{{ 1|db(2,3)}}
总结:
注意有多个的情况,执行顺序(before_request按照顺序往下依次执行,after_request最后一个开始依次往上)。before_request请求拦截后(也就是有return值),response所有都执行。
session、闪现、请求扩展的更多相关文章
- Flask - 请求响应 | session | 闪现 | 请求扩展 | 中间件
请求响应 flask的请求信息都在request里 flask的响应方式有四剑客,也可以自定义响应 请求相关信息 # request.method 提交的方法 # request.args get请求 ...
- 第二篇 Flask基础篇之(闪现,蓝图,请求扩展,中间件)
本篇主要内容: 闪现 请求扩展 中间件 蓝图 写装饰器,常用 functools模块,帮助设置函数的元信息 import functools def wrapper(func): @functools ...
- Flask的闪现(message) 请求扩展 中间件 蓝图
补充:一个编程思路 需求:做一些邮件短信微信的消息通知,比如账单告警之类的:比如数据库操作,数据库种类繁多:缓存的选择比如redis/memcache,诸如此类需要进行选择配置,如果我们单纯的用函数去 ...
- flask之请求与响应、闪现(阅后即焚)、请求扩展(before,after)、中间件、LOCAL对象、偏函数、
目录 1.flask请求与响应 2.闪现 3.请求扩展 4.中间件 5.LOCAL对象 6.偏函数 templates 1.flask请求与响应 from flask import Flask,req ...
- Flask框架(三)—— 请求扩展、中间件、蓝图、session源码分析
Flask框架(三)—— 请求扩展.中间件.蓝图.session源码分析 目录 请求扩展.中间件.蓝图.session源码分析 一.请求扩展 1.before_request 2.after_requ ...
- flask框架(六)——闪现(get_flashed_message)、请求扩展、中间件(了解)
message -设置:flash('aaa') -取值:get_flashed_message() -假设在a页面操作出错,跳转到b页面,在b页面显示a页面的错误信息 1 如果要用flash就必须设 ...
- Flask的session——关于写扩展所学习到的
这两天端午节.趁着端午节没事干,写了个flask的扩展--flask-RedisSession 在flask中使用该扩展可以让你借助redis数据库轻松获得server-side session. 这 ...
- Flask请求扩展和数据库连接池
1.1.Flask之请求扩展 #!/usr/bin/env python # -*- coding:utf-8 -*- from flask import Flask, Request, render ...
- Flask 的 请求扩展 与 中间件
Flask 的 请求扩展 与 中间件 flask 可以通过 扩展(装饰器)来实现类似于django 中间件的功能 类似于django 的中间件, 在执行视图函数之前, 之后的执行某些功能 1 @app ...
随机推荐
- css两种常用的不定宽高的水平垂直居中方法,记住它,不再为样式发愁
css 几种常用的简单容易记住的水平垂直居中方法 前言 正文 第一种方法 第二种方法 结束语 前言 我们在设计网页时,会大量的运用到水平垂直居中,如果知道元素的宽高,那水平垂直居中是很简单的,无非是用 ...
- C# 监听值的变化
1.写一个监听值变化的类 public class MonitorValueChange { private Visibility myValue; public Visibility MyValue ...
- nova 云主机 evacuate 简单分析
原文链接:http://www.ishenping.com/ArtInfo/3318250.html #故障节点compute=down nova host-evacuate ostack245.bj ...
- Linux kernel 模块 hello 测试
原文链接:https://www.cnblogs.com/nerohwang/p/3621316.html hello.c 文件: #include <linux/kernel.h> /* ...
- 仿京东BOE官网图片链接
- 利用JavaScript当鼠标点击导航时改变背景
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- 第一篇Scrum冲刺博客
目录 一.Alpha 阶段认领的任务 二.明日成员的任务安排 三.整个项目预期的任务量 四.敏捷开发前的感想 五.团队期望 一.Alpha 阶段认领的任务 陈起廷 任务 预计时间 日记天气.心情选择 ...
- 如何在Linux上使用scp命令进行服务器之间的文件/目录传输
1. 本地上传文件到远程: scp [local_file_path] [username]@[server_ip]:[remote_dir] 2. 本地上传目录到远程: scp -r [local_ ...
- python3 raw 数据转换为jpg
python3 raw 数据转换为jpg 我们大家都知道,sensor 直接出来的裸数据为raw 数据,没有经过编解码,压缩. 我们需要将raw数据转换为其他格式比如jpg,png,bmp 人眼才能看 ...
- 4gl游标cursor
游標有多種寫法,一種是報表里常見的 這種寫法呢,先定義一個接受sql語句的變量l_sql,而接受到的語句實際上只是一連串的字符串,還包含了4gl裡面的一些變量.寫好的l_sql裡面之所以有多個分段的雙 ...