为什么Django rest框架中的“HyperlinkedRelatedField”需要其视图作为上下文返回“request”参数?

2024-04-30 05:18:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我是DRF的新手。在序列化程序类中定义HyperlinkedRelatedField时,如下所示:

    class JournalistSerializer(serializers.ModelSerializer):
       articles = serializers.HyperlinkedRelatedField(view_name="article- 
       detail")

我收到以下错误:

     `HyperlinkedRelatedField` requires the request in the serializer 
      context. Add `context={'request': request}` when instantiating the 
      serializer.

当我在相关APIView类中添加context={'request': request}时:

    class JournalistListCreateAPIView(APIView):

    def get(self,request):
        journalist = Journalist.objects.all()
        serializer = JournalistSerializer(journalist,many=True,context= 
        {'request':request})
        return Response(serializer.data)

APIView中的超链接工作正常。但我不明白为什么在实例化序列化程序时必须发送请求。请帮我理解


Tags: the程序序列化定义requestcontextdrfclass
1条回答
网友
1楼 · 发布于 2024-04-30 05:18:41

在构建绝对URL时,它确实需要上下文中的request

更具体地说,它使用了^{}序列化程序方法

def get_url(self, obj, view_name, request, format):
    ...
    return self.reverse(view_name, kwargs=kwargs, request=request, format=format)

相关问题 更多 >