如何将序列化的API视图数据放入另一个视图?

时间:2018-12-13 06:12:43

标签: python django python-3.x django-rest-framework

DRF API视图数据转换为另一个Django视图的最佳方法是什么?

当前,我只是通过requests模块调用视图:

response = requests.get('my_api_view')

但是有更清洁的方法吗?

我也可以在另一个视图中实例化API视图类,但这会给我未序列化的对象。

2 个答案:

答案 0 :(得分:1)

我不确定您到底想要实现什么,但是想要从另一个视图调用一个视图可能是体系结构不佳的迹象。这可能意味着您在第二个视图中实现了业务逻辑,而您想在第一个视图中进行访问。通常,经验法则是将这样的通用逻辑移到其他地方,以便可以由不同的视图使用。 同样,我不知道您想要实现什么,但这是有可能的。

答案 1 :(得分:0)

不确定获取未序列化的对象是什么意思。如果您使用的是基于函数的视图,则可以执行以下操作:

def view(request):
    # some stuff done
    return Response(<result>)

def another_view(request)
    return view(request)

如果视图基于类,则可以执行以下操作:

class AClassBasedView(SomeMixin, SomeOtherMixin):

    def get(self, request):
        # do something with the request
        return Response(<some result>)


class AnotherClassBasedView(SomeMixin, SomeOtherMixin):

    def compute_context(self, request, username):
        #some stuff here here                        
        return AnotherClassBasedView.as_view()(request)

这两个方法都将返回一个<class 'rest_framework.response.Response'>对象,该对象可以进一步传递。