资讯专栏INFORMATION COLUMN

Flask三之请求与响应

HackerShell / 3139人阅读

摘要:第二种是显式地调用方法响应调用视图函数后,会将其返回值作为响应的内容。视图函数返回值即为响应如果不想返回一个元组,视图函数还可以返回对象。函数可接受一或多个参数和视图函数的返回值一样,并返回一个对象。

二.请求与响应 1、HTTP方法
GET: 浏览器告知服务器:只 获取 页面上的信息并发给我。这是最常用的方法。
POST: 浏览器告诉服务器:想在 URL 上 发布 新信息。并且,服务器必须确保数
      据已存储且仅存储一次。这是 HTML 表单通常发送数据到服务器的方法。
2、程序和请求上下文

请求上下文:

from flask import request
@app.route("/useragent/")
def userAgent():
    user_agent = request.headers.get("User-Agent")
    return "

Your browser is %s

" % user_agent

程序上下文:

from flask import current_app
# print("current_app.name:",current_app.name)
app_ctx = app.app_context()
app_ctx.push()
current_app.name
app_ctx.pop()
没激活程序上下文之前就调用 current_app.name 会导致错误,但推送完上下文
之后就可以调用了。
注意,在程序实例上调用 app.app_context() 可获得一个程序上下文。也就是说,
有两种方式来创建程序上下文:
1.第一种是隐式的:无论何时当一个请求上下文被压栈时, 如果有必要的话一个程
序上下文会被一起创建。由于这个原因,你可以忽略程序上下文的存在,除非你需
要它。

第二种是显式地调用 app_context() 方法:

from flask import Flask, current_app
app = Flask(__name__)
with app.app_context():
    # within this block, current_app points to app.
    print current_app.name
3、响应

Flask 调用视图函数后,会将其返回值作为响应的内容。

@app.route("/")
def index():
    return "

Bad Request

", 400

视图函数返回值即为响应

如果不想返回一个元组,Flask视图函数还可以返回Response对象。make_response()
函数可接受一或多个参数(和视图函数的返回值一样),并返回一个 Response 对
象。有时我们需要在视图函数中进行这种转换,然后在响应对象上调用各种方法,
进一步设置响应。下例创建了一个响应对象:

from flask import make_response
@app.route("/response/")
def response():
    resp = make_response("

Bad Request

",400) return resp

响应的两种方法:

视图函数直接返回一个元组 (response, status, headers)

视图函数返回一个make_resonse()函数产生的响应对象

4、Cookies

cookies的操作:

通过请求对象的 cookies 属性来访问 Cookies。(请求对象的 cookies 属性是一个
内容为客户端提交的所有 Cookies 的字典。)

通过响应对象的set_cookie方法来设置 Cookies。

@app.route("/cookie/")
def cookie():
    resp = make_response("set cookie")
    resp.set_cookie("name","myname")
    return resp
5、请求钩子

请求钩子使用修饰器实现。 Flask 支持以下 4 种钩子:

• before_first_request:注册一个函数,在处理第一个请求之前运行。
• before_request:注册一个函数,在每次请求之前运行。
• after_request:注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
• teardown_request:注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/40797.html

相关文章

  • 如何理解Nginx, WSGI, Flask之间的关系

    摘要:通过查阅了些资料,总算把它们的关系理清了。在这个过程中,服务器的作用是接收请求处理请求返回响应服务器是一类特殊的服务器,其作用是主要是接收请求并返回响应。正是为了替代而出现的。三结语最后以,,之间的对话结束本文。 刚转行互联网行业,听到了许多名词:Flask、Django、WSGI、 Nginx、Apache等等,一直无法搞清楚这些开源项目之间的关系,直至看到这篇文章后感觉醍醐灌顶,以...

    魏明 评论0 收藏0

发表评论

0条评论

HackerShell

|高级讲师

TA的文章

阅读更多
最新活动
阅读需要支付1元查看
<