【发布时间】:2016-01-16 02:24:07
【问题描述】:
我的应用布局
my_app
__init__.py
my_app
__init__.py
startup
__init__.py
create_app.py
create_users.py
common_settings.py
core
__init__.py
models.py
views.py
errors
__init__.py
errors.py
内部 __init__.py
from flask import Flask
from flask_script import Manager
from flask_sqlalchemy import SQLAlchemy
app = Flask(__name__) # The WSGI compliant web application object
db = SQLAlchemy(app) # Setup Flask-SQLAlchemy
manager = Manager(app) # Setup Flask-Script
from my_app.startup.create_app import create_app
create_app()
create_app.py
def create_app(extra_config_settings={}):
# Load all blueprints with their manager commands, models and views
from my_app import core
return app
核心/__init__.py
# from . import views
views.py
from my_app import app, db
from flask import Flask, request
@app.errorhandler(Error)
def handle_invalid_usage(error):
response = jsonify(data=error.to_dict())
response.status_code = error.status_code
return response
我将此代码基于我找到的教程。只要我将 core 文件夹中的 __init__.py 留空,一切正常。
如果我不这样做,我会在我的 views.py 中得到一个 NameError: name Error is not defined。 Error 来自errors.py。
我有三个问题:
1) 为什么只有当我在 core/__init__.py 中留下import 语句时才会发生这种情况。
2)
create_app.py
app.config.from_envvar('ENV_SETTINGS_FILE')
# Other app.config commands here
from my_app import core
return app
from my_app import core 运行时会发生什么?
3) 最后当我return app 时,这是为了确保Inner __init__.py 文件包含更新后的app 对象吗?
任何解释将不胜感激!
【问题讨论】:
-
Error在views.py中是如何定义的?它不是进口的或任何东西,所以难怪你会得到NameError。
标签: python flask python-import