一: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的更多相关文章

  1. Flask基础(02)-->搭建Flask项目虚拟环境

    什么是虚拟环境? 虚拟环境:其实就是一个文件夹,是python环境的复制 为什么要搭建虚拟环境? 因为一台计算机上可能要同时开发多个不同的项目,那么这些项目有可能用到同一个包的不同版本,如此一来,我们 ...

  2. Flask—06-理解掌握flask数据模型(02)

    数据模型 模型关系 一对多(使用最多) 一:学生(Student) 需要添加反向引用 多:文章(Article) 需要添加外键关联 一对一 一:学生(Student),主表 需要添加反向引用,在一对多 ...

  3. Flask Web开发从入门到放弃(一)

    第1章 章节一 01 内容概要 02 内容回顾 03 路飞学城之加入购物车 04 路飞学城之结算 05 路飞学城之立即支付 06 路飞学城之后续计划 07 Flask框架简介和快速使用 08 FLas ...

  4. Python-S9-Day125-Web微信&爬虫框架之scrapy

    01 今日内容概要 02 内容回顾:爬虫 03 内容回顾:网络和并发编程 04 Web微信之获取联系人列表 05 Web微信之发送消息 06 为什么request.POST拿不到数据 07 到底使用j ...

  5. 学习python-20191203-Python Flask高级编程开发鱼书_第02章 Flask的基本原理与核心知识

    视频01: 做一个产品时,一定要对自己的产品有一个明确的定位.并可以用一句话来概括自己产品的核心价值或功能. 鱼书网站几个功能 1.选择要赠送的书籍,向他人赠送书籍(价值功能,核心价值的主线): 2. ...

  6. 02 flask源码剖析之flask快速使用

    02 flask快速使用 目录 02 flask快速使用 1.flask与django的区别 2. 安装 3. 依赖wsgi Werkzeug 4. 快速使用flask 5. 用户登录&用户管 ...

  7. flask --- 02. 路由, 初始化配置,蓝图

    一.Flask 路由 1.添加路由的方式 ① ② 实例: ① @app.route("/my_de") def detail() ② def detail() app.add_ur ...

  8. 02: flask 使用举例

    1.1 项目说明   https://github.com/rickyyangrui/Flask_web_demo1 1.项目文件结构 2.项目主文件 cssmin==0.2.0 Flask==0.1 ...

  9. 02 flask 请求钩子、异常捕获、上下文、Flask-Script 扩展、jinja2 模板引擎、csrf防范

    一 请求勾子 在客户端和服务器交互的过程中,有些准备工作或扫尾工作需要处理,比如: 在请求开始时,建立数据库连接: 在请求开始时,根据需求进行权限校验: 在请求结束时,指定数据的交互格式: 为了让每个 ...

随机推荐

  1. c++ 适配器模式(adapter)

    当两个系统的接口不一样时,我们就要重新封装一下接口,以便于当前系统的调用.这种模式叫做适配器模式.适配器模式分为两种: 1.对象组合适配器(Object Adapter) 2.类适配器(Class A ...

  2. ubuntu16.04 安装openpose

    安装 Anaconda3 Tensorflow-cpu python3tensorflow 1.4.1+opencv3, protobuf, python3-tk ================== ...

  3. Docker学习笔记_删除某个镜像

    实验:删除某个镜像 sudo docker rmi [Image ID] 1.查看镜像的ID                  sudo docker images 2.删除镜像            ...

  4. Python3.7安装Django

    一.系统环境 操作系统:Win7 64位 Python版本:3.7 二.安装参考 Django的下载网址:https://www.djangoproject.com/download/ 当前最新版本: ...

  5. ubuntu 14 编译ARM g2o-20160424

    1. 安装eigen sudo apt-get install libeigen3-dev sudo apt-get install libsuitesparse-dev sudo apt-get i ...

  6. SQLAlchemy(ORM框架)

    SQLAlchemy SQLAlchemy概述 2 3 4 5 6 7 8 9 10 11 12 13 MySQL-Python     mysql+mysqldb://<user>:&l ...

  7. win32多线程 (六)信号量 Synchronization

    比如:多个人来取仓库物品,我们为了做到多线程的互斥,一种方法是,对每个货品加个mutex互斥锁.另种方法,对窗口(只一个)加个mutex锁,但这样的话效率都比较低.而另钟解决办法是用信号量.信号量其实 ...

  8. Ajax步骤

    var request = new XMLHttpRequest(); request.open("GET","get.php",ture); request. ...

  9. 运行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 ...

  10. 二度xml<一>

    又一次学习Xml,之前差不多都忘了,为了下半年的面试,为了工作重头来过....... 其实我觉得直接上代码来的更实际点,理论的东西,我们随便找点书看看就行. 下面的代码是为了打印出一个xml文件 xm ...