django - Django ViewSet 中详细参数的含义是什么?
问题描述
我在 Django ViewSet 中创建了一个自定义操作方法,我看到 了详细参数。如果我设置detail=True
了我不能从 URL 调用这个方法,但是如果我设置了detail=False
,我可以调用这个方法。我可以知道详细参数的含义是什么吗?
这是我的观点=>
class TimeSheetViewSet(viewsets.ModelViewSet):
queryset = TimeSheet.objects.all()
serializer_class = TimeSheetSerializer
@action(methods=['get'], detail=True)
def byhello(self, request):
return Response({"From Hello":"Got it"})
这是路由器和 URL 模式 =>
router.register('timesheets_ts', TimeSheetViewSet, base_name='timesheets')
urlpatterns = [
path('api/', include(router.urls))
]
解决方案
正如文档所述,如果您通过detail=True
,则意味着该路由器将返回一个对象,而如果您不通过detail=True
或通过detail=False
,它将返回一个对象列表。
要记住的一件事是,如果您不做任何事情或在此函数中不需要单个对象,您可以设置detail=False
在你的情况下,它会是这样的:
@action(methods=['get'], detail=True)
def byhello(self, request, pk=None):
self.object = self.get_object()
return Response({"From Hello":"Got it"})
推荐阅读
- visual-studio - 解决方案资源管理器未在 Microsoft Visual Studio 中显示
- ruby - 使用 Rspec 测试重试块
- azure - Azure 负载均衡器,用于两个在同一端口号 8005 上侦听的虚拟机。如何从负载均衡器的前端 IP 路由流量?
- node.js - 配置 React Native 后端 URL 的最佳实践
- powerbi - 使用参数的动态 bin 大小,在 power bi 的条形图中 bin 不匹配
- wordpress - 如何完成 Wordpress 查询以按元值和日期对结果进行排序
- java - 如何使用 Java 获取存储在 Secure Credentials Vault (SCV) 中的证书(.jks 文件)
- css - 背景过滤器在 iOS 上不起作用/影响定位?
- amazon-web-services - 詹金斯不是只在我的笔记本电脑上打开浏览器吗?
- visualization - PCL Visualizer:拾取/选择线条和其他形状