1

我正在 Flask 中创建一个模块,我可以在其中上传个人资料图片。我为此使用了 Flask 上传。但是,我在如何初始化存储方面遇到了问题。

这是我所做的:

from flask.ext.bootstrap import Bootstrap
from flask.ext.mail import Mail
from flask.ext.moment import Moment
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.login import LoginManager
from config import config
from flask.ext.storage import get_default_storage_class
from flask.ext.uploads import init


bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()
Storage = get_default_storage_class()

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


def create_app(config_name):
    app = Flask(__name__)
    app.config.from_object(config[config_name])
    config[config_name].init_app(app)
    Storage.init_app(app)
    bootstrap.init_app(app)
    mail.init_app(app)
    moment.init_app(app)
    db.init_app(app)
    login_manager.init_app(app)

    from .main import main as main_blueprint
    app.register_blueprint(main_blueprint)

    from .auth import auth as auth_blueprint
    app.register_blueprint(auth_blueprint, url_prefix='/auth')

    return app

PS:init_app 是我config.py文件中的一个函数。我的代码config.py写在下面。

这就是我想要发生的事情,但是我得到了一个错误。它指出我需要一个参数get_default_storage_class。所以我的常识出现了,并且这样做了:

bootstrap = Bootstrap()
mail = Mail()
moment = Moment()
db = SQLAlchemy()
login_manager = LoginManager()
login_manager.session_protection = 'strong'
login_manager.login_view = 'auth.login'


def create_app(config_name):
    #...
    Storage = get_default_storage_class(app)

它没有错误,但是当我尝试在我的views.py文件中导入存储时。这是我所做的:

from .. import db, Storage

然后,我又遇到了一个错误。这表明我无法导入存储。

无论如何,这是我的 config.py:

Class Config:
#..
#initialization stuff

@staticmethod
    def init_app(app):
        pass

这是回溯:

(venv) C:\Users\LouieCubero\Documents\GitHub\flasky3>python manage.py runserver
Traceback (most recent call last):
  File "manage.py", line 7, in <module>
    app=create_app(os.getenv('FLASK_CONFIG') or 'default')
  File "C:\Users\LouieCubero\Documents\GitHub\flasky3\app\__init__.py", line 36,
 in create_app
    from .main import main as main_blueprint
  File "C:\Users\LouieCubero\Documents\GitHub\flasky3\app\main\__init__.py", lin
e 5, in <module>
    from . import views, errors
  File "C:\Users\LouieCubero\Documents\GitHub\flasky3\app\main\views.py", line 5
, in <module>
    from .. import db, Storage
ImportError: cannot import name Storage
4

0 回答 0