私はこのようなアプリを持っている:使用デシベル() - フラスコ
のMyApp /アプリ/ INITの.py:
import sqlite3
from contextlib import closing
from flask import Flask, g
from flask_sqlalchemy import SQLAlchemy
from flask_login import LoginManager
# from app.models import db
from database import db
application = Flask(__name__)
application.config.from_object('config')
application.debug = True
db.init_app(application)
login_manager = LoginManager()
login_manager.init_app(application)
from app import views
のMyApp/database.py:
をfrom flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
myappの/アプリ/ models.py:
from database import db
from app import application
class CRUDMixin(object):
...
def delete(self, commit=True):
"""Remove the record from the database."""
with application.app_context():
db.session.delete(self)
return commit and db.session.commit()
class Model(CRUDMixin, db.Model):
"""Base model class that includes CRUD convenience methods."""
__abstract__ = True
def __init__(self, **kwargs):
db.Model.__init__(self, **kwargs)
class User(Model):
"""
:param str email: email address of user
:param str password: encrypted password for the user
"""
__tablename__ = 'users'
email = db.Column(db.String, primary_key=True)
password = db.Column(db.String)
authenticated = db.Column(db.Boolean, default=False)
def is_active(self):
"""True, as all users are active."""
return True
def get_id(self):
"""Return the email address to satisfy Flask-Login's requirements."""
return self.email
def is_authenticated(self):
"""Return True if the user is authenticated."""
return self.authenticated
def is_anonymous(self):
"""False, as anonymous users aren't supported."""
return False
私が構造化しようとしたプロジェクトでは、with application.app_context()
をModel
ヘルパークラスに必要としませんでした。私のセットアップとその重要な違いは見当たらず、with application.app_context()
に関連するものは何もありませんdb
私はいつもapplication not registered on db
というエラーが出ます。 app/models.py
とdatabase.py
に表示されているものがapp/__init__.py
にあるときは、with application.app_context()
を必要とせずに作業しました。db
をfrom myapp.app import db
のようにそのままインポートしてそのまま動作させました。 application not registered on db
の苦情を解決するにはどうすればよいですか?app_context
を必要とせずに簡単にdb
を使用できますが、すべてがinit
に詰まっていない適切なディレクトリ構造を維持しますか?ありがとうございます