Geting Started
本节,我们设置最基本的项目结构,以及定义第一个服务。
创建全新的项目,并安装 Flask :
$ mkdir testdriven-app && cd testdriven-app $ virtualenv .venv $ source .venv/bin/activate (.venv)$ pip install flask
$ mkdir services && cd services $ mkdir users && cd users $ mkdir project
|
在 project 目录添加 __init__.py
文件。
services/users/project/__init__.py
:
from flask import Flask, jsonify
app = Flask(__name__)
@app.route('/users/ping', methods=['GET']) def ping_pong(): return jsonify({'status': 'success', 'message': 'pong'})
|
接下来,配置 Flask CLI
工具以在终端运行应用。
如果您习惯了 Flask Script,也可以用其替换 Flask CLI
,但是请注意,它已经被弃用了。
services/users/manage.py
:
from flask.cli import FlaskGroup
from project import app
cli = FlaskGroup(app)
if __name__ == '__main__': cli()
|
在这里,我们创建了一个新 FlaskGroup
实例,以使用与 Flask 应用程序相关的命令扩展常规 CLI 。
从“users”目录运行服务器:
(.venv)$ export FLASK_APP=project/__init__.py (.venv)$ python manage.py run
|
在浏览器中访问 http://127.0.0.1:5000/users/ping 应该可以看到:
{ "message": "pong", "status": "success" }
|
终止服务,并在 project
路径下创建 config.py
。
services/users/project/config.py
:
class BaseConfig: """Base configuration""" TESTING = False
class DevelopmentConfig(BaseConfig): """Development configuration""" pass
class TestingConfig(BaseConfig): """Testing configuration""" TESTING = True
class ProductionConfig(BaseConfig): """Production configuration""" pass
|
更新 __init__.py
文件并引入 dev
配置:
services/users/project/__init__.py
from flask import Flask, jsonify
app = Flask(__name__)
app.config.from_object('project.config.DevelopmentConfig')
@app.route('/users/ping', methods=['GET']) def ping_pong(): return jsonify({'status': 'success', 'message': 'pong'})
|
再次运行。这一次,我们通过设置 FLASK_ENV
的环境变量为 development
来启用调试模式。
$ export FLASK_ENV=development $ python manage.py run * Serving Flask app "project/__init__.py" (lazy loading) * Environment: development * Debug mode: on * Running on http://127.0.0.1:5000/ (Press CTRL+C to quit) * Restarting with stat * Debugger is active! * Debugger PIN: 181-409-129
|
现在,当您对代码进行更改时,应用程序将自动重新加载。完成后,终止服务器并从虚拟环境中停用。然后,将 requirements.txt
文件添加到 users
目录:
cd ~/testdriven-app pip freeze > requirements.txt
|
最好,将项目使用 Git
管理。