2016-10-10 1 views
1

importiert Ich versuche Kolben-trüb Dateien Uploads zu verwenden, aber ich kann nicht importieren Speicher (ein Modell in Kolben-trüb) das ist, wie ich es config:Kolben Import: nicht Name Speicher

class DevelopmentConfig(): 
    DEBUG = True 
    SECRET_KEY = 'I_will_never_told_you' 
    STORAGE_PROVIDER = "LOCAL" 
    STORAGE_CONTAINER = "./data" 
    STORAGE_KEY = "" 
    STORAGE_SECRET = "" 
    STORAGE_SERVER = True 

und ich initialisieren es in app/init Py:

from flask import Flask, redirect, request, url_for, g 
from .main import main as main_blueprint 
from .auth import auth as auth_blueprint 
from config import DevelopmentConfig 
from flask_login import LoginManager 
from flask_cloudy import Storage  #import Storage 

login_manager = LoginManager() 
login_manager.session_protection = 'strong' 
login_manager.login_view = 'auth.login' 

def create_app(): 
    app = Flask(__name__) 
    app.config.from_object(DevelopmentConfig) 
    app.register_blueprint(main_blueprint) 
    app.register_blueprint(auth_blueprint, url_prefix='/auth') 
    login_manager.init_app(app) 

    storage = Storage()  
    storage.init_app(app)  #initialise it 

    @login_manager.user_loader 
    def load_user(user_id): 
     from .models import User 
     try: 
      user = User.get(User.id == int(user_id)) 
     except User.DoesNotExist: 
      user = None 
     return user 

    @login_manager.unauthorized_handler 
    def unauthorized_callback(): 
     return redirect(url_for('auth.login')) 

    return app 

dann versuche ich Speicherung in app/main/views.py zu importieren: hatte ich versuche

und

from .. import storage 

und

from ..__init__ import storage 

aber es kann immer noch nicht gut arbeiten, wenn ich from app import storage und from .. import storage es so aufzuwachsen verwenden:

Traceback (most recent call last): 
    File "run.py", line 1, in <module> 
    from app import create_app 
    File "/home/lc/workspace/homeworkAdminSystem/app/__init__.py", line 2, in <module> 
    from .main import main as main_blueprint 
    File "/home/lc/workspace/homeworkAdminSystem/app/main/__init__.py", line 5, in <module> 
    from . import views, errors 
    File "/home/lc/workspace/homeworkAdminSystem/app/main/views.py", line 5, in <module> 
    from .. import storage 
ImportError: cannot import name storage 

und als ichversuchte es erscheinen:

Traceback (most recent call last): 
    File "run.py", line 1, in <module> 
    from app import create_app 
    File "/home/lc/workspace/homeworkAdminSystem/app/__init__.py", line 2, in <module> 
    from .main import main as main_blueprint 
    File "/home/lc/workspace/homeworkAdminSystem/app/main/__init__.py", line 5, in <module> 
    from . import views, errors 
    File "/home/lc/workspace/homeworkAdminSystem/app/main/views.py", line 6, in <module> 
    from ..__init__ import storage 
    File "/home/lc/workspace/homeworkAdminSystem/app/__init__.py", line 3, in <module> 
    from .auth import auth as auth_blueprint 
    File "/home/lc/workspace/homeworkAdminSystem/app/auth/__init__.py", line 5, in <module> 
    from . import views 
    File "/home/lc/workspace/homeworkAdminSystem/app/auth/views.py", line 4, in <module> 
    from ..models import db, User, Homework, Score 
    File "/home/lc/workspace/homeworkAdminSystem/app/models.py", line 3, in <module> 
    from .__init__ import login_manager 
ImportError: cannot import name login_manager 

und hier ist meine Modelle (app/models) darin verwendete ich from .__init__ import login_manager aber es hat gut funktioniert, so davon bin ich zu verwirren, so wie kann ich Speicherung in meinem views.py importieren ?

Antwort

0

Sie müssen Ihre Speicherinitialisierung außerhalb der create_app-Funktion platzieren.

Die storage Variable ist momentan nur innerhalb der create_app Funktion verfügbar.

+0

oh, ich wünschte, ich kann meinen PC jetzt, ich werde versuchen, morgen früh, danke. –

+0

Ich habe versucht, Speicherinitialisierung außerhalb von create_app zu setzen, kann aber immer noch nicht arbeiten. was auch immer danke. –

+0

Vielleicht die Funktion ganz loswerden? Oder du könntest die Speichervariable zu – David