我目前正在构建一个使用应用程序工厂模式的应用程序。在此应用程序中,我有一个自定义 URL 转换器,它接受一个整数并返回具有该 ID 的 SQLAlchemy 模型实例(如果存在)。当我不使用应用程序工厂模式时,这工作得很好,但是使用它,在访问任何使用转换器的路由时,我会收到此错误:
RuntimeError: application not registered on db instance and no application bound to current context
Run Code Online (Sandbox Code Playgroud)
我的应用程序结构如下所示:
app/__init__.py
from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from config import config
db = SQLAlchemy()
def create_app(config_name):
app = Flask(__name__)
app.config.from_object(config[config_name])
db.init_app(app)
from app.converters import CustomConverter
app.url_map.converters["custom"] = CustomConverter
from app.views.main import main
app.register_blueprint(main)
return app
Run Code Online (Sandbox Code Playgroud)
app/converters.py
from werkzeug.routing import ValidationError, IntegerConverter
from app.models import SomeModel
class CustomConverter(IntegerConverter):
""" Converts a valid SomeModel ID into …Run Code Online (Sandbox Code Playgroud)