gpt4 book ai didi

python - Django 休息框架 : Passing Context in Viewsets

转载 作者:行者123 更新时间:2023-12-04 10:17:28 25 4
gpt4 key购买 nike

View 集很方便,因为我们可以做这样的事情并获得一个完全工作的序列化器:

class StoreObjectViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
permission_classes = [IsAuthenticated]
queryset = StoreObject.active_objects.all()
serializer_class = serializers.StoreObjectSerializer

不幸的是,据我所知,要将上下文传递给序列化程序,我们需要执行以下操作:
PostSerializer(data=request.data, context={'request': request})

这意味着我们需要手动覆盖 ViewSets 提供的每个方便的方法(据我所知)。有没有办法将上下文注入(inject)每个序列化程序,同时仍然保持 Viewsets 方便?

最佳答案

默认情况下,request正在发送到任何通用 View 和 View 集。您可以在 GitHub 中查看源代码也是。因此,您不必在每个 View 中都注入(inject)它们。如果你想传递额外的上下文,然后覆盖 get_serializer_context(...) 方法:

class StoreObjectViewSet(mixins.ListModelMixin, mixins.RetrieveModelMixin, viewsets.GenericViewSet):
...

def get_serializer_context(self):
context = super().get_serializer_context()
context['custom_context'] = 'Your custom context'
return context

关于python - Django 休息框架 : Passing Context in Viewsets,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61007646/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com