第一章 Flask配置
第一章将会帮助你去理解不同的Flask配置方法来满足每个项目各式各样的需求。
在这一章,将会涉及到以下方面:
- 用virtualenv搭建环境
- 处理基本配置
- 基于类的配置
- 组织静态文件
- 用实例文件夹(instance floders)进行部署
- 视图和模型的融合(composition)
- 用蓝本(blueprint)创建一个模块化的web应用
- 使用setuptools使Flask应用可安装
介绍
“Flask is a microframework for Python based on Werkzeug, Jinja2 and good intentions.”
何为微小?是不是意味着Flask在功能性上有所欠缺或者必须只能用一个文件来完成web应用?并不是这样!它说明的事实是Flask目的在于保持核心框架的微小但是高度可扩展。这使得编写应用或者扩展非常的容易和灵活,同时也给了开发者为他们的应用选择他们想要配置的余地,没有在数据库,模板引擎和其他方面做出强制性的限制。通过这一章你将会学到一些建立和配置Flask的方法。
开始Flask几乎不需要2分钟。建立一个简单的Hello World应用就和烤派一样简单:
from flask import Flask
app = Flask(__name__)
@app.route('/')
def hello_world():
return 'Hello to the World of Flask!'
if __name__ == '__main__':
app.run()
现在需要安装Flask,这可以通过pip实现:
$ pip install Flask
之前的一小段就是完整的基于Flask的web应用。导入的Flask类创建的实例是一个web服务器网关接口(Web Server Gateway Interface WSGI)应用。所以代码里的app成为了我们的WSGI应用。因为这个一个独立的模块,我们用__name__
和'__main__'
字符串做比较。如果我们将这些保存为名字是app.py的文件,这个应用可以使用下面的命令来运行:
$ python app.py
* Running on http://127.0.0.1:5000/
现在如果在浏览器中输入http:/127.0.0.1:5000/,将会看见应用在运行。
提示
千万不要将你的文件保存为flask.py,如果你这样做了,将会和导入的Flask冲突。
用virtualenv搭建环境
Flask能够通过使用pip或者easy_install进行安装,但我们应该使用virtualenv来创建应用环境。通过为应用创建一个单独的环境可以防止全局Python被我们自定义的安装所影响。单独的环境是有用的,因为你可以多个应用程序有同一个库的多个版本,或者一些包可能有相同库的不同版本作为它们的依赖。virtualenv在单独的环境里管理这些,不会让任何错误版本的库影响到任何其他应用。
怎么做
首先用pip安装virtualenv,然后创建一个名字为my_flask_env的环境。这同时会创建一个相同名字的文件夹:
$ pip install virtualenv
$ virtualenv my_flask_env
现在运行下面命令:
$ cd my_flask_env
$ source bin/activate
$ pip install flask
这将激活环境并且在其中安装Flask。现在可以在这个环境中对我们的应用做任何事情,而不会影响到任何其他Python环境。
原理
直到现在,我们已经使用pip install flask多次了。顾名思义,这个命令的意思是安装Flask,就像安装其他Python包一样。如果仔细观察一下通过pip安装Flask的过程,我们将会看到一些包被安装了。下面是Flask包安装过程的一些摘要:
$ pip install -U flask
Downloading/unpacking flask
......
......
Many more lines......
......
Successfully installed flask Werkzeug Jinja2 itsdangerous markupsafe
Cleaning up...
提示
在前面的命令中,-U指的是安装与升级。这将会用最新的版本覆盖已经存在的安装。
如果观察的够仔细,总共有五个包被安装了,分别是flask,Werkzeug,Jinja2,itsdangerous,markupsafe。Flask依赖这些包,如果这些包缺失了,Flask将不会工作。
其他
为了更美好的生活,我们可以使用virtualenvwrapper。顾名思义,这是对virtualenv的封装,使得处理多个virtualenv更容易。
提示
记住应该通过全局的方式安装virtualenvwrapper。所以需要停用还处在激活状态的virtualenv,可以用下面的命令:
$ deactivate
同时,你可能因为权限问题不被允许在全局环境安装virtualenvwrapper。这种情况下需要切换到超级用户或者使用sudo。
可以用下面的命令来安装virtualenvwrapper:
$ pip install virtualenvwrapper
$ export WORKON_HOME=~/workspace
$ source /usr/local/bin/virtualenvwrapper.sh
在上面的代码里,我们安装了virtualenvwrapper,创建了一个名字为WORKON_HOME的环境变量,同时给它赋值了一个路径,当用virtualenvwrapper创建虚拟环境时,虚拟环境将会安装在这个路径下面。安装Flask可以使用下面的命令:
$ mkvirtualenv flask
$ pip install flask