首页 > 解决方案 > Flask:如何覆盖蓝图路线?

问题描述

我有这样的base_blueprint:

from flask import (
    jsonify,
    Blueprint,
)


class RestBlueprint(object):
    def __init__(self, db_model):
        self.blueprint = Blueprint(db_model.__tablename__, db_model.__tablename__, url_prefix='/' + db_model.__tablename__ + '/')
        self.db_model = db_model

        @self.blueprint.route("/<entity_id>", methods=["GET"])
        def get_by_id(entity_id):
            response = get_item()
            return jsonify(response)

我想通过其他蓝图继承这个蓝图:

from rest_blueprint import RestBlueprint

class UserRestBlueprint(RestBlueprint):
    def __init__(self, db_model):
        super(UserRestBlueprint, self).__init__(db_model)

        @self.blueprint.route("/<user_id>", methods=["GET"])
        def get_by_id(user_id):
            response = get_item()
            del response["password"]
            return jsonify(response)

这是一个基本示例,我想这样做的原因是为我的大多数 CRUD 模型使用基本蓝图,并为 4-5 个模型使用自定义蓝图。我遇到的问题是我无法覆盖基本蓝图 crud 方法,我很好奇是否有任何方法可以为自定义蓝图提供自定义 CRUD 方法。

任何帮助表示赞赏!

标签: pythonflask

解决方案


推荐阅读