如何从常规视图使用django REST视图

如何从常规视图使用django REST视图,django,django-rest-framework,Django,Django Rest Framework,我有这个api视图 class ItemList(generics.ListCreateAPIView): model = Item def get_queryset(self): return get_objects_for_user('item_view',self.request.user) 另一个应用程序视图不是API的一部分 def item_search(request): qs = get_objects_for_user('item_vie

我有这个api视图

class ItemList(generics.ListCreateAPIView):
    model = Item

    def get_queryset(self):
      return get_objects_for_user('item_view',self.request.user)
另一个应用程序视图不是API的一部分

def item_search(request):
    qs = get_objects_for_user('item_view',request.user)

    q = request.GET.get('q',None)
    qs.filter ( ... )
    paginator = Paginator(qs['queryset'], 20)
    ..
在常规视图中从API视图使用get_queryset的最佳方式是什么

我有一些权限\正在进行过滤,我希望尽可能保持视图干燥

我浏览了一下代码,发现泛型视图是用ItemList.initizlierequest实例化的,但我一直在那里碰壁,这让我觉得这可能不是解决方案

编辑:


到目前为止,我得到的最接近的是ItemList.as_viewrequest-它返回数据,但仍然不够,我需要th QS,以便对其应用额外的筛选

Django Rest框架视图基于基于Django类的视图。除此之外,选择的方法名称与Django泛型视图中的方法名称相同


我想说,最好的方法是构建一个在API视图和普通视图中都使用的mixin。这个mixin可以提供get_queryset和其他功能。如果您保持名称标准,两个真实视图都将非常小,并且大多数逻辑将在您的mixin中

我不确定我是否理解你的答案。我不是在寻找一种将API get_queryset混合到常规视图中的方法-我在寻找一种方法,在给定对常规视图的请求的情况下,使用API中的资源API作业是提取/序列化/筛选数据,常规视图的工作是呈现html响应-它们有不同的用途,应该保持独立。您的问题是在常规视图中从API视图使用get_queryset的最佳方式是什么;我理解您在Django视图中使用DRF视图的想法,但我仍然认为最干净的方法是将共享行为放入一个单独的类中,该类由Rest框架视图和Django视图使用。