2015-11-01 28 views
2

使用應用程序工廠時,如何在燒瓶中處理路線?鑑於包含blog的軟件包包含應用程序所需的所有內容以及創建應用程序的管理腳本,那麼您應該如何引用路徑中的應用程序?使用應用程序工廠時的綁定路線

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

manage.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 

博客/ routes.py

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

問題是應用程序是在軟件包外部創建的,所以如何設置這樣的設置來處理路線?

回答

4

通常我會用藍圖使用應用程序工廠。

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 improt Blueprint 
route_blueprint = Blueprint('route_blueprint', __name__) 

@route_blueprint.route() 
def index(): 
    return "Hello" 

docs: Application Factories