from flask import Flask
from flask_bootstrap import Bootstrap
from flask_mail import Mail
from flask_moment import Moment
from flask_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)
from .main import main as main_blueprint
app.register_blueprint(main_blueprint)
return app
上面例子是 flask web development 书中的 7-3 的引用,from .main import main as main_blueprint
是在 create_app 中导入已定义的 blueprint,已定义的 blueprint 的名称是 main。我的问题是这段代码可以加到这个例子的最上面么?跟开头的其他 import 语句放在一起,而不是放在 create_app 这个函数中。之所以有这样的疑问,因为书中有提到包的循环导入的问题,放在 create_app 中,是为了解决包循环导入的问题么?
附加下项目的目录结构
.
|______init__.py
|____email.py
|____main
| |______init__.py
| |____errors.py
| |____forms.py
| |____views.py
|____models.py
|____static
| |____favicon.ico
|____templates
| |____404.html
| |____500.html
| |____base.html
| |____index.html
| |____mail
| | |____new_user.html
| | |____new_user.txt
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.