2011年2月

Flask 是一个十分小巧的Python Web 框架,本文是一篇最简单的 Flask 入门教程,本文所基于的前提是你的电脑已经安装了Python和Python Easy_Install 工具,并且是连着网的。

安装 Flask

安装Flask就像安装其它的Python包一样,使用 easy_install 工具:

#easy_install Flask

如果你是将Flask完整的下载了下来,刚可以使用其自己提供的安装工具安装:

#python ./setup.py install

创建最简单的 Flask 程序

一个标准的 Flask 程序具有如下的目录结构:

/yourapplication
/app.py
/static
/style.css
/...
/templates
/layout.html
/index.html
/...

其中 app.py 不是必须的,我们可以取任何一个合理的文件名,当然,我本示例中,我们将把所有的代码都写在这个文件里面,static 文件夹可以保存一些静态文件,如CSS或者JS文件,而templates刚保存模板文件。

app.py

我们现在创建一个小程序,当用户访问:http://127.0.0.1:5000/ 时,页面上面简单的返回:Hello Flask文字,访问:http://127.0.0.1:5000/flask 时返回 “This page’s path is /flask 文字”,代码如下:

#!/usr/bin/env python
# encoding: utf-8
from flask import Flask
app = Flask(__name__)
@app.route('/')
def helloflask():
return "Hello Flask"
@app.route('/flask')
def flask_page():
return "This page's path is /flask"
if __name__ == "__main__":
app.run()

将上面代码复制到 app.py 文件中,直接运行之:@python app.py@ 即可,这个时候我们去浏览器里面访问上面提到的两个地址,就可以得到想要的结果。

示例程序详解

在上面的示例中,我们做了下面这些事情:

  1. from flask import Flask是从flask中导入Flask,然后我们再使用其提供的方法创建了一个实例@app = Flask(name)@
  2. 接着我们设置两个路径@/@和@/flask@,让这两个路径分别对应相应的处理方法@helloflask()@和@flask_page()@,这两个方法分别返回我们需要的文字。
  3. 接着最后我们一个 if 语句,表示,如果是直接运行该文档,刚创建服务并运行这个程序。

更大的程序

如果你想创建更大的程序,刚可以使用Session,Render_Template等等更高级的模块,你可以访问Flask官方网站以获得更多的帮助:Flask Pocoo

Flask使用Blueprint让应用实现模块化,在Flask中,Blueprint具有如下属性:

  • 一个应用可以具有多个Blueprint
  • 可以将一个Blueprint注册到任何一个未使用的URL下比如 “/”、“/sample”或者子域名
  • 在一个应用中,一个模块可以注册多次
  • Blueprint可以单独具有自己的模板、静态文件或者其它的通用操作方法,它并不是必须要实现应用的视图和函数的
  • 在一个应用初始化时,就应该要注册需要使用的Blueprint

但是一个Blueprint并不是一个完整的应用,它不能独立于应用运行,而必须要注册到某一个应用中。

Blueprint 的概念

简单来说,Blueprint 是一个存储操作方法的容器,这些操作在这个Blueprint 被注册到一个应用之后就可以被调用与招待,Flask 可以通过Blueprint来组织URL以及处理请求。

一个简单的 Blueprint 示例:sample.py

#!/usr/bin/env python
# encoding: utf-8
from flask import Blueprint
sample = Blueprint('sample',__name__)
@sample.route('/')
@sample.route('/hello')
def index():
return "This page is a blueprint page"

在 app 应用中注册我们的Blueprint:app.py

#!/usr/bin/env python
# encoding: utf-8
from flask import Flask
from sample import sample
app = Flask(__name__)
app.register_blueprint(sample)
if __name__ == "__main__":
app.run()

上面的代码在一个名为 app 的应用中注册一个名为 sample 的Blueprint,现在我们运行这个应用,则可以通过我们在Blueprint中定义的方法来访问它并获得 This page is a blueprint page的返回结果:

$python app.py

我们需要访问的网址是:http://127.0.0.1:5000 或者 http://127.0.0.1:5000/hello 都可以得到同样的结果。

但是如果你希望所有的 Blueprint 的请求都基于某一个固定的URL之后,刚我们可以在注册的时候指定其根路径的URL,比如我们想使用 http://127.0.0.1:5000/sample 这个地址来访问 sample 这个 Blueprint,刚可以使用下面这样的注册方法:

app.register_blueprint(sample,url_prefix='/sample')