码迷,mamicode.com
首页 > 其他好文 > 详细

Flask实例教程四

时间:2014-06-02 04:06:20      阅读:319      评论:0      收藏:0      [点我收藏+]

标签:python   flask   fabric   

一: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_response

app = 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‘}

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

三种方式的总结:

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

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

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

二:Flask request对象详解

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

# encoding=utf-8
from flask import Flask,request

app = 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窗口下的输出信息。

bubuko.com,布布扣

bubuko.com,布布扣

bubuko.com,布布扣

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


本文出自 “专注linux” 博客,请务必保留此出处http://forlinux.blog.51cto.com/8001278/1420968

Flask实例教程四,布布扣,bubuko.com

Flask实例教程四

标签:python   flask   fabric   

原文地址:http://forlinux.blog.51cto.com/8001278/1420968

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!