【问题标题】:Importing Views导入视图
【发布时间】:2016-01-16 03:48:12
【问题描述】:

我的应用布局

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,因此不会有问题。

谢谢。

【问题讨论】:

    标签: python flask python-import


    【解决方案1】:
    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 的任何标识符。

    要获得您期望的行为,您需要在 __init__.py 中导入 views

    from . import views
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-12-05
      • 1970-01-01
      • 2015-03-05
      • 2014-11-15
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多