导入视图
Importing Views
我的应用布局
my_app
__init__.py
my_app
__init__.py
startup
create_app.py
create_users.py
common_settings.py
core
models.py
views.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
from native_linguist_server import app, db
@app.before_first_request
def initialize_app_on_first_request():
""" Create users and roles tables on first HTTP request """
from .create_users import create_users
create_users()
def create_app(extra_config_settings={}):
app.config.from_envvar('ENV_SETTINGS_FILE')
# Load all blueprints with their manager commands, models and views
from my_app import core
return app
当我 运行 我的应用程序像这样并尝试在我的浏览器中加载 view
时,我收到 404
错误。
但是如果我改变:
from my_app import core
到
from my_app.core import views
它工作正常。
有人可以向我解释一下这两个调用之间的区别吗?我原以为 from my_app import core
也会导入 views.py
,因此不会有问题。
谢谢。
from my_app import core
将加载并执行 my_app/core/__init__.py
(如果存在)。然后,您将可以访问在 __init__.py
中定义或导入的任何标识符。
from my_app.core import views
将加载并执行 my_app/core/views.py
。然后,您将可以访问在 views.py
中定义或导入到 views.py
中的任何标识符。
要获得您期望的行为,您需要在 __init__.py
:
中导入 views
from . import views
我的应用布局
my_app
__init__.py
my_app
__init__.py
startup
create_app.py
create_users.py
common_settings.py
core
models.py
views.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
from native_linguist_server import app, db
@app.before_first_request
def initialize_app_on_first_request():
""" Create users and roles tables on first HTTP request """
from .create_users import create_users
create_users()
def create_app(extra_config_settings={}):
app.config.from_envvar('ENV_SETTINGS_FILE')
# Load all blueprints with their manager commands, models and views
from my_app import core
return app
当我 运行 我的应用程序像这样并尝试在我的浏览器中加载 view
时,我收到 404
错误。
但是如果我改变:
from my_app import core
到
from my_app.core import views
它工作正常。
有人可以向我解释一下这两个调用之间的区别吗?我原以为 from my_app import core
也会导入 views.py
,因此不会有问题。
谢谢。
from my_app import core
将加载并执行 my_app/core/__init__.py
(如果存在)。然后,您将可以访问在 __init__.py
中定义或导入的任何标识符。
from my_app.core import views
将加载并执行 my_app/core/views.py
。然后,您将可以访问在 views.py
中定义或导入到 views.py
中的任何标识符。
要获得您期望的行为,您需要在 __init__.py
:
views
from . import views