2016-06-09 1 views
-1
from flask import Flask, render_template 
from flask.ext.bootstrap import Bootstrap 
from flask.ext.mail import Mail 
from flask.ext.moment import Moment 
from flask.ext.sqlalchemy import SQLAlchemy 
from config import config 

bootstrap = Bootstrap() 
mail = Mail() 
moment = Moment() 
db = SQLAlchemy() 

def create_app(config_name): 
    app = Flask(__name__) 
    app.config.from_object(config[config_name]) 
    config[config_name].init_app(app) 
    bootstrap.init_app(app) 
    mail.init_app(app) 
    moment.init_app(app) 
    db.init_app(app) 
    # 
    return app 

Hallo, ich lerne Flask durch das Lesen 'Flask Web Development von Grinberg M'. Der obige Code wird aus diesem Buch kopiert.Warum muss ich App in Flask create_app zurückgeben?

Könnte jemand bitte erklären, warum ich am Ende "App zurückgeben" muss?

+1

Damit die App zurückgegeben wird. – davidism

+0

T T yeah Ich weiß, App wird zurückgegeben..aber ich weiß nicht, warum die App zurückgegeben werden muss. – leadh2o

+1

Damit es verwendet werden kann. – davidism

Antwort

1

Soweit ich weiß, haben Sie nicht den vollständigen Code kopiert.

Sie haben wahrscheinlich verpasst diese Zeilen oder etwas ähnliches:

if __name__ == '__main__': 
    app = create_app('Example') 
    app.run() 

Der Grund der Autor gibt die App, wie @davidism erklärt hat, ist, dass wir die App-Instanz verwenden unsere Flask-Anwendung zu starten . So einfach ist das!

Ich hoffe, dies beantwortet Ihre Frage.

+0

Danke, es hilft wirklich. – leadh2o

+0

Haben Sie überprüft, ob Sie Zeilen verpasst haben? Ich bin froh, dass es geholfen hat. –

+0

Übrigens, würden Sie mir sagen, warum die Variablen wie mail.init_app (app) beendet werden, selbst wenn sie nicht zurückgegeben wurden? Oder nach welchem ​​Schlüsselwort muss ich suchen, um diesen Teil des Wissens zu lernen? – leadh2o