Flask的设计易于使用和扩展。它的初衷是为各种复杂的Web应用程序构建坚实的基础。可以自由地插入任何扩展。也可以自由构建自己的模块。Flask适合各种项目。它对原型设计特别有用。Flask依赖于两个外部库:Jinja2模板引擎和Werkzeug WSGI工具包。Flask是最精致,功能最丰富的微框架之一。Flask还很年轻,拥有蓬勃发展的社区,一流的扩展和漂亮的API。Flask具有快速模板,强大的WSGI功能,在Web应用程序和库级别的完整单元可测性,以及大量文档等优点。选用Flask框架也是因为它方便入手,结构简单,零配置,是个学习Python Web开发的好工具。
像其他模块一样,Flask的安装很简单,下面通过pip包管理器来安装
pip install flask
检查一下是否安装正确 在命令行下输入 python
进入命令行模式 引入flask模块 回车
>>> import flask
>>>
如果没有错误提醒,就说明安装成功了
Hello world
下面写个最简单的Web应用 hello.py
from flask import Flask # 引入Flask模块
app = Flask(__name__) # 创建一个应用
@app.route('/')
def index(): # 定义根目录处理器
return '<h1>Hello World!</h1>'
if __name__ == '__main__':
app.run() # 启动服务
打开终端,跳转到hello.py
文件所在的文件夹,进入python命令行模式,启动服务
>>> python hello.py
如果一起正常的话会有类似下面的反馈
* Serving Flask app "hello" (lazy loading)
* Environment: production
WARNING: This is a development server. Do not use it in a production deployment.
Use a production WSGI server instead.
* Debug mode: off
* Running on http://127.0.0.1:5000/ (Press CTRL+C to quit)
因为是通过
app.run()
启动的服务,所以会有个错误提示,提醒不能将此Web应用部署在生产环境中,可以暂时忽略
此时,打开浏览器,输入 127.0.0.1:5000/ 或者 localhost:5000/, 就可以看到 Hello World!欢迎字样。
路由是Web开发中一个很重要的概念,用来将不同的请求,映射到响应的处理方法上,这个方法被称为视图函数。比如刚才的Hello
应用,将根请求,映射到index
处理方法上,下面简单了解下Flask对路由的支持 Flask通过修饰器(和Java的注解类似)来建立路由映射关系的,已经看到修饰器是app.rotue()
简单路由
如 访问 /hello
@app.route('/hello')
def hello():
return 'Hello!'
动态路由
如访问 /user/bob
或者 /user/lily
都会映射到同一视图函数上
@app.route('/user/<name>')
def user(name):
return '<h1>Hello, %s! </h1>' % name
动态域名中动态的部分可以作为视图函数的参数,也支持多个动态参数,如访问 /user/bob/23
@app.route('/user/<name>/<age>')
def user(name, age):
return "<h1> Hello, %s, you're %s years old" % (name, age)
还可以指定动态部分的数据类型,如
@app.route('/post/<int:post_id>')
def show_post(post_id):
# show the post with the given id, the id is an integer
return 'Post %d' % post_id
@app.route('/path/<path:subpath>')
def show_subpath(subpath):
# show the subpath after /path/
return 'Subpath %s' % escape(subpath)