小编Enc*_*ize的帖子

使用应用程序工厂模式将应用程序上下文传递给自定义转换器

我目前正在构建一个使用应用程序工厂模式的应用程序。在此应用程序中,我有一个自定义 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)

python flask flask-sqlalchemy

5
推荐指数
1
解决办法
931
查看次数

标签 统计

flask ×1

flask-sqlalchemy ×1

python ×1