将DRF API
视图数据转换为另一个Django视图的最佳方法是什么?
当前,我只是通过requests
模块调用视图:
response = requests.get('my_api_view')
但是有更清洁的方法吗?
我也可以在另一个视图中实例化API视图类,但这会给我未序列化的对象。
答案 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'>
对象,该对象可以进一步传递。