Flask 请求和响应

本文介绍了Flask中请求调度的原理,包括HEAD、OPTIONS、GET等请求方法以及如何使用@app.route装饰器处理请求。此外,详细阐述了Flask中的上下文、响应处理,如元组响应、Response对象、redirect、abort函数以及模板渲染,特别是Jinja2模板引擎的使用,包括变量、过滤器和控制语句等。
摘要由CSDN通过智能技术生成

一、请求调度

浏览器通过URL访问Flask服务器时,要通过URL和视图函数的映射关系表找到处理该URL的视图函数(该视图函数返回响应给浏览器),这个映射关系可以通过app.route修饰器建立。下面给出了上一篇文章中的helloworld例子

#coding:utf-8

from flask import Flask

app=Flask(__name__)

@app.route("/")
def index():
	return "<h1>Hello World!</h1>"

@app.route("/user/<name>")
def user(name):
	return "<h1>Hello,%s</h1>"%name

if __name__=="__main__":
	app.run(debug=True,host="0.0.0.0",port=8000)
例子中将程序根目录URL和视图函数index映射起来。可以在python命令行通过app.url_map查看这种映射关系:

HEAD,OPTIONS,GET是URL与视图函数的请求方法,HEAD和OPTIONS为Flask自动处理,功能分别为获取响应报文首部(即不发送报文主体)和询问访问某URL支持的方法。 可以通过route修饰器的methods参数为路由指定不同的请求方法,比较常用的是GET和POST方法。

二、程序和请求上下文

视图函数在处理请求时,有时需要获取一些其他对象信息,这个时候的处理方式是使用线程独立的全局变量而非传参,比如请求对象request等(其他上下文全局变量如下表)。上下文可以理解为对这些对象的引用池,方便我们随时访问这些变量。

Flask上下文全局变量
变量名 上下文 说明
current_app 程序上下文 当前激活的程序实例,比如helloworld例子中的app
g 程序上下文 用作处理请求时的临时存储,每次请求都重设
request 请求上下文 请求对象,包含了客户端HTTP请求的内容,例如获取客户端请求报文头部中包含的
User-Agent信息:request.headers.get("User-Agent")
session 请求上下文 用户会话,字典格式,存储请求间需要记住的信息

从flask中引入上下文变量就可以使用这些变量,例如下面的视图函数返回请求中的User-Agent给客户端:

@app.route("/user-agent/")
def get_user_agent():
	user_agent=request.he
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值