2016-01-16 2 views
0

Моей раскладка приложенияИмпортирующих Просмотры

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 

Когда я запускаю мое приложение, как этот ап d пытается загрузить view в мой браузер, я получаю ошибку 404.

Однако, если я изменю:

from my_app import core  

в

from my_app.core import views 

он работает отлично.

Может кто-нибудь объяснить мне разницу между этими двумя вызовами? Я бы подумал, что from my_app import core также будет импортировать views.py, и, следовательно, не было бы проблем.

спасибо.

ответ

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.

Чтобы получить поведение вы ожидаете, вам нужно импортировать views внутри __init__.py:

from . import views 
Смежные вопросы