Flo*_*uin 6 django django-rest-framework
我有一个带有 Django REST framework API 的移动应用程序,我有很多 ModelViewSet 可以调用来检索数据。我有性能问题,因为我需要在用户登录后调用很多路由,我想保留 REST 逻辑,但在登录后返回登录响应中的所有视图集内容(保留它们的过滤器)。
是否可以从另一个视图(视图集或 APIView)调用 ModelViewset list()?
我在 SO 上找到的唯一答案是做这样的事情
class ContentGenerator(APIView):
def get(self, request, format=None):
data = MyModelViewSet.as_view({'get': 'list'})(request).data
return Response({'data': data})
Run Code Online (Sandbox Code Playgroud)
但是不支持
Exception Value: The `request` argument must be an instance of `django.http.HttpRequest`, not `rest_framework.request.Request`
Run Code Online (Sandbox Code Playgroud)
还有其他解决方案吗?
经过一些研究,看起来在其他视图中重用请求可能会产生副作用,因此 DRF 并未正式支持它。这很hacky,但如果您知道自己在做什么,这是一个解决方案。
data = MyModelViewSet.as_view({'get': 'list'})(request._request).data
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6271 次 |
| 最近记录: |