Flask 程序的基本结构
Flask 上下文全局变量
current_app;程序上下文全局变量;当前激活程序的程序实例
g;程序上下文全局变量;处理请求时用作临时存储的对象。每次请求都会重设该变量
request;请求上下文;请求对象,封装了客户端发出的HTTP请求中的内容
session:请求上下文;用户会话,用于存储请求之间需要"记住"的值的词典
初始化
from flask import Flask
app = Flask(__name__)
路由和视图函数
客户端把请求发给Web服务器,Web服务器再把请求发送给Flask程序实例。程序实例需要知道对每个URL请求运行哪些代码,所以保存了一个URL到Python函数的映射关系。处理URL和函数之间关系的程序称为路由。
在 Flask 程序中定义路由的最简便方式,是使用程序实例提供的 app.route 修饰器,把修
饰的函数注册为路由。下面的例子说明了如何使用这个修饰器声明路由:
@app.route('/')
def index():
return '<h1>Hello World!</h1>'
启动服务器
app.run(debug=True)
URL映射是URL和视图函数之间的对应关系,Flask使用app.route修饰器或者非修饰器形式的app.add_url_rule()生成映射
/static/< filename >路由是Flask添加的特殊路由,用于访问静态文件。
URL 映射中的 HEAD 、 Options 、 GET 是请求方法,由路由进行处理。Flask 为每个路由都指
定了请求方法,这样不同的请求方法发送到相同的 URL 上时,会使用不同的视图函数进行处理。而HEAD和OPTIONSF方法由Flask自动处理。
请求钩子
请求钩子使用修饰器实现。Flask支持以下4种钩子。
before_first_request :注册一个函数,在处理第一个请求之前运行。
• before_request :注册一个函数,在每次请求之前运行。
• after_request :注册一个函数,如果没有未处理的异常抛出,在每次请求之后运行。
• teardown_request :注册一个函数,即使有未处理的异常抛出,也在每次请求之后运行。
响应
FLask调用视图函数后,会将其返回值作为响应的内容。大多数情况下,响应就是一个简单的字符串,作为HTML页面回送客户端。
但 HTTP 协议需要的不仅是作为请求响应的字符串。HTTP 响应中一个很重要的部分是状态码,Flask默认设为200,这个代码表明请求已经被成功处理。
make_response()可接收1个,2个或3个参数,并返回一个Response对象。
有一种特殊的响应由abort函数生成,用于处理错误。
from flask import abort
@app.route('/user/<id>')
def get_user(id):
user = load_user(id)
if not user:
abort(404)
return '<h1>Hello,%s</h1>'%user.name
#abort不会把控制权交还给调用它的函数,而是抛出异常把控制权交给web服务器
Flask 扩展
Flask 被设计为可扩展形式,故而没有提供一些重要的功能,例如数据库和用户认证,所以开发者可以自由选择最适合程序的包,或者按需求自行开发。
Flask-Script是一个Flask扩展,为Flask程序添加了一个命令行解析器。FLask-Script自带了一组常用选项,而且还支持自定义命令。
专为Flask开发的扩展都暴露在flask.ext命名空间下
shell命令用于在程序的上下文中穷Python shell会话。可以使用该会话中运行维护任务或测试,还可以调试异常。
runserver命令用来启动Web服务器。运行python hello.py runserver将以调试模式启动Web服务器
python hello.py runserver --host 0.0.0.0
python hello.py runserver#将以调式模式启动Web服务器

浙公网安备 33010602011771号