2015-11-20 2 views
0

Я пытаюсь разбить приложение Flask на несколько файлов, и я попал в ловушку со всеми импортируемыми модулями.Приложение Splitting Flask в несколько файлов; Проблема с импортом модуля

Надеюсь кто-то может пролить некоторый свет о этой проблеме ...

Это ошибка, я получаю:

NameError: global name 'db' is not defined 

http://i.imgur.com/nU0ZriI.png

Я имею такую ​​структуру файлов/папок:

├── Pluto 
│   ├── __init__.py 
│   ├── pluto_admin.py 
│   ├── pluto.db 
│   ├── pluto_db.py 
│   ├── pluto_home.py 
│   ├── static 
│   │   ├── css 
│   │   ├── fonts 
│   │   ├── img 
│   │   └── js 
│   └── templates 
└── run.py 

init .py:

from flask import Flask 

pluto = Flask(__name__) 

""" imports """ 
import Pluto.pluto_db 
import Pluto.pluto_home 
import Pluto.pluto_admin 

pluto_db.py:

from Pluto import pluto 
from flask.ext.sqlalchemy import SQLAlchemy 

pluto.config["SQLALCHEMY_DATABASE_URI"] = "sqlite:////var/www/flask/pluto_dev/Pluto/pluto.db" 
db = SQLAlchemy(pluto) 

""" MODELS """ 

class Users(db.Model): 
    id = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True, unique=True) 
    email = db.Column(db.String(254), unique=True, nullable=False) 
    nume = db.Column(db.String(64), nullable=False) 
    prenume = db.Column(db.String(64), nullable=False) 

    def __repr__(self): 
     return "<User %r>" % (self.email) 

pluto_home.py:

from Pluto import pluto 

@pluto.route("/") 
def index(): 
    users = db.Users.query.all() 
    return users 

ответ

1

Может быть, вы должны добавить это pluto_home.py

from pluto_db import db 
+0

AttributeError: 'SQLAlchemy' объект не имеет атрибута «Пользователи» – Faryus

+0

Очевидно, если я это сделаю из pluto_db импорта * он работает с Users.query.all() однако, есть ли способ я могу импортировать этот модуль глобально, без необходимости делать это в каждом файле? – Faryus

+0

Нет, вы не можете. Лучший вариант - от пользователей импорта pluto_db – jab

Смежные вопросы