私は e コマース サイトのサインアップ/サインイン システムを作成しており、フラスコ セキュリティ ( http://pythonhosted.org/Flask-Security/ ) を使用してサインアップ機能を処理しています。基本セットアップの一部には、次の signup.py モジュールが必要です。
from flask.ext.security import SQLAlchemyUserDatastore, Security
from app.models import User, Role
from app import app, db
# Setup Flask Security
user_datastore = SQLAlchemyUserDatastore(db, User, Role)
security = Security(app, user_datastore)
次に、次のように user_datastore とセキュリティ オブジェクトを views.py モジュールにインポートする必要があります。
from app.signup import user_datastore, security
問題は、上記の import ステートメントをビュー モジュールに含めるとすぐに、アプリ全体がクラッシュし、単体テストまたは動作テストを実行しようとすると次のトレースバック エラーが発生することです (読みやすくするために編集されています)。
======================================================================
ERROR: Failure: AttributeError ('_FakeSignal' object has no attribute 'connect_via')
----------------------------------------------------------------------
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/nose/loader.py", line 413, in loadTestsFromName
addr.filename, addr.module)
File "/Library/Python/2.7/site-packages/nose/importer.py", line 47, in importFromPath
return self.importFromDir(dir_path, fqname)
File "/Library/Python/2.7/site-packages/nose/importer.py", line 94, in importFromDir
mod = load_module(part_fqname, fh, filename, desc)
File "/Users/faiyamrahman/programming/Python/WebApps/NibsNWhiskeyFull/tests/test_database.py", line 6, in <module>
from app import app, db, models
File "/Users/faiyamrahman/programming/Python/WebApps/NibsNWhiskeyFull/app/__init__.py", line 9, in <module>
from app import views, models
File "/Users/faiyamrahman/programming/Python/WebApps/NibsNWhiskeyFull/app/views.py", line 7, in <module>
from app.signup import user_datastore
File "/Users/faiyamrahman/programming/Python/WebApps/NibsNWhiskeyFull/app/signup.py", line 7, in <module>
security = Security(app, user_datastore)
File "/Users/faiyamrahman/programming/Python/WebApps/NibsNWhiskeyFull/flask/lib/python2.7/site-packages/flask_security/core.py", line 346, in __init__
self._state = self.init_app(app, datastore, **kwargs)
File "/Users/faiyamrahman/programming/Python/WebApps/NibsNWhiskeyFull/flask/lib/python2.7/site-packages/flask_security/core.py", line 368, in init_app
identity_loaded.connect_via(app)(_on_identity_loaded)
AttributeError: '_FakeSignal' object has no attribute 'connect_via'
これが何を意味するのかわかりません。フラスコセキュリティのドキュメントを読んでみましたが、なぜそれが起こっているのかわかりません。これを刺してくれる人に感謝します!