首页 > 解决方案 > 如何从基于类的视图中重用代码 - Django Rest Framework

问题描述

我是 Django/Django 休息框架基于类的视图的新手。如果是重复的问题,请原谅。

考虑一下我有一个像这样的基于类的视图。

class UserBucket(APIView):
    def get(self, request):
        ...
        ...
        return Response(some_data)
    def put(self, request):
        ...
        ...
        return Response(some_data)

class FilterView(APIView):
    def get(self, request):
        data_to_filter = request.query_params.get('filterData')
        # filter logic goes here
        ...
        ...
        return Response(filtred_data)

如果我想在 UserBucket 的 put 方法中使用这个 FilterView 代码,这样我就可以保持 DRY 原则,我该如何实现呢?我在这里真正想做的是,从 UserBucket put 方法中,我想用几个参数调用 FilterView 的 get 方法并取回结果。

标签: djangodjango-rest-framework

解决方案


尝试使用带有 Mixins 的通用视图,或者你可以深入他们的代码来学习如何实现这样的

https://www.django-rest-framework.org/api-guide/generic-views/#mixins

https://github.com/encode/django-rest-framework/blob/master/rest_framework/viewsets.py


推荐阅读