使用应用程序工厂时绑定路由



使用应用程序工厂时,假设如何在烧瓶中处理路由?给定一个包含应用程序所需一切的包blog和一个创建应用程序的管理脚本,那么你应该如何在路由中引用该应用程序?

├── blog
    ├── manage.py 
    └── blog
        ├── __init__.py
        ├── config.py  
        └── routes.py

管理.py

#!/usr/bin/env python
from flask.ext.script import Manager
manager = Manager(create_app)
# <manager commands>
# ...
# ...
manager.add_option('-c', '--config', dest='config', required=False)
manager.run()

博客/__init__.py

from flask import flask
from .config import Default
def create_app(config=None):
    app = Flask(__name__)
    app.config.from_object(Default)
    if config is not None:
        app.config.from_pyfile(config)
    return app

博客/路线.py

@app.route()  # <-- erm, this won't work now!? 
def index():
     return "Hello"

问题是应用程序是在包外创建的,那么这样的设置应该如何处理路由呢?

通常我使用带有蓝图的应用程序工厂。

blog/__init__.py

from flask import flask
from .config import Default
def create_app(config=None):
    app = Flask(__name__)
    if config is not None:
        app.config.from_pyfile(config)
    else:
        app.config.from_object(Default)
    from blog.routes import route_blueprint
    app.register_blueprint(route_blueprint)
    return app

blog/routes.py

from flask import Blueprint
route_blueprint = Blueprint('route_blueprint', __name__)
@route_blueprint.route()
def index():
     return "Hello"

docs:Application Factories

最新更新