Flask RestPlus可重用的CRUD操作

时间:2018-12-06 20:00:43

标签: python python-3.x flask flask-restful flask-restplus

我是python的新手,目前正在使用Flask rest-plus提供基本的CRUD操作和针对不同资源的详尽文档。

当前我正在做什么

api = DTO.api
_response = DTO.response
_response_list = DTO.response_list
@api.route('/')
class SomeResourcetList(Resource):
    @api.marshal_with(_response_list)
    def get(self):
      return some_list_response

    @api.marshal_with(_response)
    def post(self):
      return "Object created"

@api.route('<equipment_id>')
class SomeResource(Resource):
    @api.marshal_with(_response)
    def get(self):
      return some_response_object

    @api.marshal_with(_response)
    def put(self):
      return some_updated_response

    def delete(self):
      return "Some delete response

以上操作正常,并为资源/实体提供CRUD

我想要的东西: 我想在BaseClass中放置2个以上的类,以便可以从它们继承我的资源类,并且所有基本的CRUD操作都已包括在内(以保持代码干燥)。但是这样做会导致内部类无法访问外部类变量(在我的情况下是 api ) 我有什么办法可以做到这一点?

class BaseController:
  def __init__(self, resource = 'equipment'):
    self.__Resource = resource
    # initialize api from child object
    self.api = PersonDTO.api

  @api.route('/')
  class SomeResourcetList(Resource):
    @api.marshal_with(_response_list)
    def get(self):
      return some_list_response

    @api.marshal_with(_response)
    def post(self):
      return "Object created"

  @api.route('<equipment_id>')
  class SomeResource(Resource):
      @api.marshal_with(_response)
      def get(self):
        return some_response_object

是否有上述问题的解决方法(我们可以在内部类中访问变量)还是有其他解决方法?

0 个答案:

没有答案