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

Python 如何将序列化的API视图数据放到另一个视图中?,python,django,python-3.x,django-rest-framework,Python,Django,Python 3.x,Django Rest Framework,将drfapi视图数据导入另一个Django视图的最佳方法是什么 目前我只是通过请求模块调用视图: response = requests.get('my_api_view') 但是有没有更干净的方法呢 我也可以在另一个视图中实例化API视图类,但这将为我提供未序列化的对象。不确定获取未序列化对象是什么意思。如果使用基于函数的视图,可以执行以下操作: def view(request): # some stuff done return Response(<result&

drfapi
视图数据导入另一个Django视图的最佳方法是什么

目前我只是通过
请求
模块调用视图:

response = requests.get('my_api_view')
但是有没有更干净的方法呢


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

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

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

def another_view(request)
    return view(request)
def视图(请求):
#做了些什么
返回响应()
def另一个_视图(请求)
返回视图(请求)
如果视图基于类,则可以执行以下操作:

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)
类AClassBasedView(SomeMixin,SomeOtherMixin):
def get(自我,请求):
#对请求做点什么
返回响应()
类另一个基于类的视图(SomeMixin,SomeOtherMixin):
def计算上下文(自身、请求、用户名):
#这里有些东西
返回另一个ClassBasedView.as_view()(请求)

这两个都将返回一个可以进一步传递的
对象。

我不确定您到底想要实现什么,但是想要从另一个视图调用一个视图可能是糟糕架构的标志。这可能意味着您在第二个视图中实现了一个业务逻辑,您希望在第一个视图中访问它。通常,经验法则是将这样一个公共逻辑移到其他地方,以便不同的视图可以使用它。
同样,我不知道您想要实现什么,但这是可能的。

您使用的是python 3还是python 2。另外,您使用的是哪个版本的Django?Python3、Django 2.0是否使用分页?您是否选中了
get_paginated_response()
?$scholars:这种设计的原因是我希望普通视图使用从API视图请求的数据呈现HTML模板。然后您可以轻松地将API视图中的逻辑移到另一个位置。如果我可以问一下,如果输入和输出不需要REST端点,为什么不在Django视图中实现视图而不是使用API视图呢?理想情况下,只有在另一台服务器上运行的另一个服务中才应该向另一个视图发送请求。否则,它将复制所有权限检查、身份验证检查和其他检查,这些检查可能通过直接从python$scholars调用来阻止:谢谢您的评论。我希望保留API视图,因为一旦我将初始数据从普通视图传递到模板,模板中的AJAX将在用户与滑块、下拉菜单等交互时调用API视图以过滤数据。实际上不必完全删除API视图。你可以只移动普通逻辑。如果您可以发布您的模板视图和API视图,我可以建议如何分离逻辑,以便您可以直接从Python调用它