一:Flask处理请求和回复

Flask和Werkzeug提供了request和response对象去处理请求和回复的数据。Flask通过@app.route包裹的函数(后面我们称这个函数叫做视图函数),来响应请求。

视图函数返回的值可以分为三类:

string:返回的就是普通的字符串。

一个response的实例:具备HTTP属性的一个响应的对象的实例。通过make_respone来构建

一个元组:(string,status)或者(string,status,http_headers)这样的结构,对于这种方式很方面不需要创建response的实例。

下面是这三种方式的例子:

# encoding=utf-8
from flask import Flask,make_responseapp = Flask(__name__)@app.route("/string/")
def return_string():return "Hello,world"@app.route("/object/")
def return_object():headers={'Content-Type':'text/plain'}return make_response('Hello,world',200,headers)@app.route("/tuple/")
def return_tuple():return "hello,world",304,{'Content-Type':'text/plain'}

三种方式的总结:

方式一:   最简单,最常用,后面可借助模板引擎输出html,但是不可以定制响应。

方式二:灵活性强,可对响应报文进行定制,定制status等等,但是需要创建一个response的实例

方式三:   具备方式二的优点,并且简单明了。

二:Flask request对象详解

通过下面的一个例子全面的去了解flask中的request对象:

# encoding=utf-8
from flask import Flask,requestapp = Flask(__name__)def dump_request_detail(request):request_detail="""
request.endpoint:{request.endpoint}
request.method:{request.method}
request.view_args:{request.view_args}
request.args:{request.args}
request.form:{request.form}
request.user_agent:{request.user_agent}
request.files:{request.files}
request.is_xhr:{request.is_xhr}
{request.headers}""".format(request=request).strip()return request_detail@app.before_request
def call_me():app.logger.debug(dump_request_detail(request))@app.after_request
def call_me(response):app.logger.debug("#After Request#\n"+repr(response))return response@app.route("/string/")
def return_string():return "Hello,World"

上面这个程序会通过app.logger.debug开启日志调试,通过在dos窗口下可以看下日志输出的信息。

重点介绍下before_request这个装饰器,这个装饰器包裹下的函数会在每次request前执行。

after_request会在每次request结束后执行。但是有一个情况就是如果一个request没有正常结束的话,那么after_request下包裹的函数是不会执行的。

那么就有另外一个装饰器teardown_request,这个装饰器无论请求是否正常结束都会执行的。

接下来开始运行上面的应用,并查看DOS窗口下的输出信息。

到此本节到此结束,更多知识还需要读者自己 进一步去了解。

转载于:https://blog.51cto.com/forlinux/1420968

Flask实例教程四相关推荐

  1. XPath实例教程四、[]的作用

    方块号里的表达式可以进一步的指定元素, 其中数字表示元素在选择集里的位置, 而last()函数则表示选择集中的最后一个元素.   /AAA/BBB[1] 选择AAA的第一个BBB子元素      &l ...

  2. 【Cocosd2d实例教程四】Cocos2d实现人物原地走动

    (转载请注明出处:http://blog.csdn.net/buptgshengod) 1.首先安装TexturePacker 1)TexturePacker介绍 这是一款图片集合软件,生成.plis ...

  3. [Python][flask][flask-wtf]关于flask-wtf中API使用实例教程

    简介:简单的集成flask,WTForms,包括跨站请求伪造(CSRF),文件上传和验证码. 一.安装(Install) 此文仍然是Windows操作系统下的教程,但是和linux操作系统下的运行环境 ...

  4. Flask从入门到做出一个博客的大型教程(四)

    Flask从入门到做出一个博客的大型教程(四) 在开始之前,先来看下项目的整体结构. flask ├── app │ ├── forms.py │ ├── __init__.py │ ├── mode ...

  5. matlab实例 pdf,matlab65实例教程(含语句注释).pdf

    matlab65实例教程(含语句注释).pdf 1 2. 基础准备及入门基础准备及入门 2.1 MATLAB 5.x 版对外部系统的要求版对外部系统的要求 2.2 MATLAB 的安装的安装 2.3 ...

  6. Silverlight实例教程 - Out of Browser在线更新和Silent安装

    通过前几篇的学习和实践,相信大家可以很轻松的创建个性化Silverlight Out of Browser应用.上周,在银光中国网论坛有人问到对于Silverlight Out of Browser应 ...

  7. smarty实例教程

    一.什么是smarty? smarty是一个使用PHP写出来的模板PHP模板引擎,它提供了逻辑与外在内容的分离,简单的讲,目的就是要使用PHP程序员同美工分离,使用的程序员改变程序的逻辑内容不会影响到 ...

  8. python Flask框架如何请求及返回数据——flask详细教程

    python Flask框架如何请求及返回数据--flask详细教程 文章目录: 1 Flask介绍 1.1 Flask简单介绍 1.2 Flask相关资料信息 2 Flask快速入门 2.1 Fla ...

  9. XAML实例教程系列 – 对象和属性

    在前一篇已经介绍XAML概念:"XAML语言是Extensible Application Markup Language的简称,英文发音是"zammel",中文称为&q ...

最新文章

  1. 编程软件python下载-python 2.7官方版
  2. 统计文件里有多少个字符(only a simple cpp)
  3. 用按钮控制歌单的上一曲和下一曲 0130 winform
  4. zookeeper启动失败
  5. 【解决】Windows Mobile 6 Professional SDK Refresh.msi 在xp上一直卡死
  6. python实现英文新闻摘要自动提取_自然语言处理之自动摘要
  7. 如何设定合理的安全工作指标
  8. python花瓣长度和花瓣宽度散点图鸢尾花_matplotlib可视化操作及案例分析
  9. switch开关语句
  10. 亚马逊电商可以用阿里云服务器吗
  11. winform直接控制云台_智云和快手发布重磅功能,手机云台升级,帮8成网民拍大片...
  12. 极速office(Word)怎么修改纸张方向
  13. 从CTF比赛真题中学习压缩包伪加密与图片隐写术【文中工具已打包】
  14. LeetCode 325. Maximum Size Subarray Sum Equals k
  15. 每一年,每一天,我们都在进步
  16. 下列属于计算机网络主要性能指标的有( ),下列属于计算机网络性能指标的有A.速率B.带宽C.时延D.误码率...
  17. addSuppressed异常抑制
  18. 阿里云OSS配合PicGo搭建图床
  19. 东野圭吾《梦幻花》读后感
  20. GaussDB高斯数据库(数据库基础知识)

热门文章

  1. 成都地震了[原创]不断更新
  2. DOTA系列 食尸鬼(小狗)攻略
  3. 一次有意义的51CTO沙龙归来
  4. 视频聊天创企Tribe获300万美元种子轮融资
  5. mysql驱动(github上的)
  6. Linux下一些操作命令
  7. 嵌入式VxWorks系统开发与应用
  8. Web.config中设置启用webservice远程调试访问 参数看不到
  9. 【踩坑之路】CentOS 下 LNMN 环境配置
  10. Dojo学习笔记(六):dojo/_base/declare