flask总结02
一:flask的响应:
flask默认支持2种响应方式: 数据响应: 默认响应html文本,也可以返回 JSON格式 页面响应: 重定向 url_for 响应的时候,flask也支持自定义http响应状态码
01:响应html文本
from flask import Flask, request
from settings.dev import DevConfig app = Flask(__name__)
app.config.from_object(DevConfig) @app.route("/test04")
def test04():
return "<h1> 这是相应html 文本的例子 </h1>" if __name__ == '__main__':
app.run()
相应效果:

02:返回JSON数据(需要导入jsonify)
案例代码:
from flask import Flask, request,jsonify
from settings.dev import DevConfig app = Flask(__name__)
app.config.from_object(DevConfig) @app.route("/test04")
def test04(): return "<h1> 这是相应html 文本的例子 </h1>" @app.route("/test05")
def test05():
data = [
{"id": 1, "username": "liulaoshi", "age": 18},
{"id": 2, "username": "liulaoshi", "age": 17},
{"id": 3, "username": "liulaoshi", "age": 16},
{"id": 4, "username": "liulaoshi", "age": 15},
] return jsonify(data) if __name__ == '__main__':
app.run()
浏览器效果:

03:重定向(需要导入from flask import Flask,redirect,url_for)
案例代码:
from flask import Flask, request,jsonify,redirect,url_for
from settings.dev import DevConfig app = Flask(__name__)
app.config.from_object(DevConfig) @app.route("/test04")
def test04(): return "<h1> 这是相应html 文本的例子 </h1>" @app.route("/test05")
def test05():
data = [
{"id": 1, "username": "liulaoshi", "age": 18},
{"id": 2, "username": "liulaoshi", "age": 17},
{"id": 3, "username": "liulaoshi", "age": 16},
{"id": 4, "username": "liulaoshi", "age": 15},
] return jsonify(data) @app.route("/test06")
def test06(): return redirect(url_for("test05")) if __name__ == '__main__':
app.run()
案例代码
案例显示结果:(地址栏很快就跳转到了test05)

04:重定向到带有参数的视图函数(在 url_for 函数中传入参数)
# 路由传递参数
@app.route('/user/<user_id>')
def user_info(user_id):
return 'hello %d' % user_id # 重定向
@app.route('/demo4')
def demo4():
# 使用 url_for 生成指定视图函数所对应的 url
return redirect(url_for('user_info', user_id=100))
05:自定义状态码
在 Flask 中,可以很方便的返回自定义状态码,以实现不符合 http 协议的状态码,例如:status code: 666
@app.route('/demo4')
def demo4():
return '状态码为 666', 400
二:会话控制(session和cookie)
01:设置cookie
设置cookie需要通过flask的Response响应对象来进行设置,由flask内部提供了一个make_response函数给我们可以快速创建响应对象
from flask import Flask,make_response
案例代码:
from flask import Flask, request,jsonify,redirect,url_for,make_response
from settings.dev import DevConfig app = Flask(__name__)
app.config.from_object(DevConfig) @app.route("/test07")
def test07():
resp=make_response('this is to set cookie')
resp.set_cookie("username","Tom",max_age=3600) #max_age=3600 有效时间秒 return resp if __name__ == '__main__':
app.run()
通过浏览器查看结果:

02:获取cookie
代码:
from flask import Flask, request,make_response
from settings.dev import DevConfig app = Flask(__name__)
app.config.from_object(DevConfig) #设置cookie
@app.route("/test07")
def test07():
resp=make_response('this is to set cookie')
resp.set_cookie("username","Tom",max_age=3600) return resp #获取cookie
from flask import Flask,request
@app.route("/get_cookie")
def resp_cookie():
resp=request.cookies.get("username")
print("cookie值是〉〉",resp) return "获取到的cookie值是:〉〉%s" % resp if __name__ == '__main__':
app.run()
显示结果:

03:设置session和获取session
对于敏感、重要的信息,建议要存储在服务器端,不能存储在浏览器中,如用户名、余额、等级、验证码等信息 在服务器端进行状态保持的方案就是`Session` 注意: **Session依赖于Cookie**,而且flask中使用session,需要配置SECRET_KEY选项,否则报错.
代码:
from flask import Flask, request,jsonify,redirect,url_for,make_response
from settings.dev import DevConfig app = Flask(__name__)
app.config.from_object(DevConfig) #设置session
from flask import Flask,session
@app.route("/test08")
def set_session():
session["username"]="One-Tom"
return "ok" #获取session
@app.route("/test09")
def get_cookie():
return session.get("username") if __name__ == '__main__':
app.run()
设置session的结果:

显示获取到的session结果:

flask总结02的更多相关文章
- Flask基础(02)-->搭建Flask项目虚拟环境
什么是虚拟环境? 虚拟环境:其实就是一个文件夹,是python环境的复制 为什么要搭建虚拟环境? 因为一台计算机上可能要同时开发多个不同的项目,那么这些项目有可能用到同一个包的不同版本,如此一来,我们 ...
- Flask—06-理解掌握flask数据模型(02)
数据模型 模型关系 一对多(使用最多) 一:学生(Student) 需要添加反向引用 多:文章(Article) 需要添加外键关联 一对一 一:学生(Student),主表 需要添加反向引用,在一对多 ...
- Flask Web开发从入门到放弃(一)
第1章 章节一 01 内容概要 02 内容回顾 03 路飞学城之加入购物车 04 路飞学城之结算 05 路飞学城之立即支付 06 路飞学城之后续计划 07 Flask框架简介和快速使用 08 FLas ...
- Python-S9-Day125-Web微信&爬虫框架之scrapy
01 今日内容概要 02 内容回顾:爬虫 03 内容回顾:网络和并发编程 04 Web微信之获取联系人列表 05 Web微信之发送消息 06 为什么request.POST拿不到数据 07 到底使用j ...
- 学习python-20191203-Python Flask高级编程开发鱼书_第02章 Flask的基本原理与核心知识
视频01: 做一个产品时,一定要对自己的产品有一个明确的定位.并可以用一句话来概括自己产品的核心价值或功能. 鱼书网站几个功能 1.选择要赠送的书籍,向他人赠送书籍(价值功能,核心价值的主线): 2. ...
- 02 flask源码剖析之flask快速使用
02 flask快速使用 目录 02 flask快速使用 1.flask与django的区别 2. 安装 3. 依赖wsgi Werkzeug 4. 快速使用flask 5. 用户登录&用户管 ...
- flask --- 02. 路由, 初始化配置,蓝图
一.Flask 路由 1.添加路由的方式 ① ② 实例: ① @app.route("/my_de") def detail() ② def detail() app.add_ur ...
- 02: flask 使用举例
1.1 项目说明 https://github.com/rickyyangrui/Flask_web_demo1 1.项目文件结构 2.项目主文件 cssmin==0.2.0 Flask==0.1 ...
- 02 flask 请求钩子、异常捕获、上下文、Flask-Script 扩展、jinja2 模板引擎、csrf防范
一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个 ...
随机推荐
- Adam:一种随机优化方法
我们介绍Adam,这是一种基于一阶梯度来优化随机目标函数的算法. 简介: Adam 这个名字来源于 adaptive moment estimation,自适应矩估计.概率论中矩的含义是:如果一个随机 ...
- SSH连接Linux
转载自百度经验 https://jingyan.baidu.com/article/bea41d439d16d7b4c51be619.html 连接Linux的工具有Putty.SSH Secure ...
- PCL 常用小知识
时间计算 pcl中计算程序运行时间有很多函数,其中利用控制台的时间计算 首先必须包含头文件 #include <pcl/console/time.h> #include <pcl/c ...
- Entity Framework 6.0 Tutorials(5):Command Interception
Interception: Here, you will learn how to intercept EF when it executes database commands. EF 6 prov ...
- Edge 自动给数字加下划线的问题
<meta name="format-detection" content="telephone=no,email=no,address=no">
- 金融卡IC卡知识50问
1.什么是金融IC卡? 金融IC卡又称为芯片银行卡,是以芯片作为介质的银行卡.芯片卡容量大,可以存储密钥.数字证书.指纹等信息,其工作原理类似于微型计算机,能够同时处理多种功能,为持卡人提供一卡多用的 ...
- javascript总结13:循环语句
1 While循环 While(条件表达式){ 只要条件表达式结果为true,循环一直执行,当条件表达式结果为false的时候,循环终止 } While循环语句需现在循环体外定义变量. 2 for循环 ...
- 面试题:测试给定的list,使用for,foreach,iterator删除元素的不同表现
上代码: 1. 使用增强for循环(foreach) package com.xxx; import java.util.ArrayList; import java.util.List; /** * ...
- 编写高质量代码改善C#程序的157个建议——建议43:让接口中的泛型参数支持协变
建议43:让接口中的泛型参数支持协变 除了上一建议中提到的使用泛型参数兼容接口不可变性外,还有一种办法是为接口中的泛型声明加上out关键字来支持协变,如下所示: interface ISalary&l ...
- 结对编程 四则运算(java)(胡大华 黄绪明)
Github项目地址 https://github.com/yogurt1998/Myapp 项目需求 题目: 实现一个自动生成小学四则运算题目的命令行程序 功能 1.使用-n 参数控制生成题目的个数 ...