Модели колб не импортируются должным образом - PullRequest
0 голосов
/ 29 октября 2018

Ну, у меня есть проект Flask, SQL-Alchemy. Пока что это моя структура:

app
  |__ module1
  |    |__ models.py
  |    |__ views.py
  |__ module2
  |    |__ models.py
  |    |__ views.py
  |__ app.py
  |__ config.py

На каждом models.py у меня есть это:

from app import db

#classes

На каждом views.py у меня есть это:

from module1.models import *
from module2.models import *
from app import app
from flask import session, request, render_template, url_for, redirect
import datetime

#views

Это мой app.py файл:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import os

app = Flask(__name__)
db = SQLAlchemy(app)

from module1.views import *
from module2.views import *

import config

def init():
    port = int(os.environ.get('PORT', 5000))
    app.run(host='0.0.0.0', port=port, debug=True)

if __name__ == "__main__":
    init()

Когда я нахожусь на module1.views и вызываю модель из module2.models, работает отлично. Но при вызове модели из module1.models для module1.views я получаю NameError:

module1.models, module1.views --> Works
module1.models, module2.views --> Works
module2.models, module1.views --> Name Error
module2.models, module2.views --> Works

Кроме того, импорт идет хорошо, ошибок нет. Когда я звоню в класс, это терпит неудачу. Я думаю, что это какая-то проблема с утверждениями import, но я не знаю, как это исправить. Есть идеи?

Спасибо, ребята, заранее

1 Ответ

0 голосов
/ 29 октября 2018

Вам может понадобиться файл __init__.py в каждом из подкаталогов https://docs.python.org/3/tutorial/modules.html#packages.

В этом ответе также есть дополнительная информация, которая может быть полезна Для чего нужен __init__.py?

Также, исходя из того, как вы разделяете функциональность модели между представлениями, возможно, было бы более целесообразно использовать структуру каталогов, такую ​​как

.
├── models
│   ├── models1.py
│   └── models2.py
└── views
    ├── view1.py
    └── view2.py
...