GET: 浏览器告知服务器:只 获取 页面上的信息并发给我。这是最经常使用的方法。 POST: 浏览器告诉服务器:想在 URL 上 发布 新信息。而且,服务器必须确保数 据已存储且仅存储一次。这是 HTML 表单一般发送数据到服务器的方法。
请求上下文:flask
from flask import request @app.route('/useragent/') def userAgent(): user_agent = request.headers.get('User-Agent') return '<p>Your browser is %s</p>' % 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
Flask 调用视图函数后,会将其返回值做为响应的内容。cookie
@app.route('/') def index(): return '<h1>Bad Request</h1>', 400
视图函数返回值即为响应并发
若是不想返回一个元组,Flask视图函数还能够返回Response对象。make_response()
函数可接受一或多个参数(和视图函数的返回值同样),并返回一个 Response 对
象。有时咱们须要在视图函数中进行这种转换,而后在响应对象上调用各类方法,
进一步设置响应。下例建立了一个响应对象:app
from flask import make_response @app.route('/response/') def response(): resp = make_response('<h1>Bad Request</h1>',400) return resp
响应的两种方法: 函数
视图函数直接返回一个元组 (response, status, headers)this
视图函数返回一个make_resonse()函数产生的响应对象code
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
请求钩子使用修饰器实现。 Flask 支持如下 4 种钩子:
• before_first_request:注册一个函数,在处理第一个请求以前运行。 • before_request:注册一个函数,在每次请求以前运行。 • after_request:注册一个函数,若是没有未处理的异常抛出,在每次请求以后运行。 • teardown_request:注册一个函数,即便有未处理的异常抛出,也在每次请求以后运行。