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防范
一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个 ...
随机推荐
- c++ 适配器模式(adapter)
当两个系统的接口不一样时,我们就要重新封装一下接口,以便于当前系统的调用.这种模式叫做适配器模式.适配器模式分为两种: 1.对象组合适配器(Object Adapter) 2.类适配器(Class A ...
- ubuntu16.04 安装openpose
安装 Anaconda3 Tensorflow-cpu python3tensorflow 1.4.1+opencv3, protobuf, python3-tk ================== ...
- Docker学习笔记_删除某个镜像
实验:删除某个镜像 sudo docker rmi [Image ID] 1.查看镜像的ID sudo docker images 2.删除镜像 ...
- Python3.7安装Django
一.系统环境 操作系统:Win7 64位 Python版本:3.7 二.安装参考 Django的下载网址:https://www.djangoproject.com/download/ 当前最新版本: ...
- ubuntu 14 编译ARM g2o-20160424
1. 安装eigen sudo apt-get install libeigen3-dev sudo apt-get install libsuitesparse-dev sudo apt-get i ...
- SQLAlchemy(ORM框架)
SQLAlchemy SQLAlchemy概述 2 3 4 5 6 7 8 9 10 11 12 13 MySQL-Python mysql+mysqldb://<user>:&l ...
- win32多线程 (六)信号量 Synchronization
比如:多个人来取仓库物品,我们为了做到多线程的互斥,一种方法是,对每个货品加个mutex互斥锁.另种方法,对窗口(只一个)加个mutex锁,但这样的话效率都比较低.而另钟解决办法是用信号量.信号量其实 ...
- Ajax步骤
var request = new XMLHttpRequest(); request.open("GET","get.php",ture); request. ...
- 运行maven build报错No goals have been specified for this build.
运行maven报错: [ERROR] No goals have been specified for this build. You must specify a valid lifecycle p ...
- 二度xml<一>
又一次学习Xml,之前差不多都忘了,为了下半年的面试,为了工作重头来过....... 其实我觉得直接上代码来的更实际点,理论的东西,我们随便找点书看看就行. 下面的代码是为了打印出一个xml文件 xm ...