python - 为什么Django rest框架中的“HyperlinkedRelatedField”需要它的视图来返回“request”参数作为上下文?
问题描述
我是 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.
当我添加context={'request': request}
相关的 APIView 类时:
class JournalistListCreateAPIView(APIView):
def get(self,request):
journalist = Journalist.objects.all()
serializer = JournalistSerializer(journalist,many=True,context=
{'request':request})
return Response(serializer.data)
APIView 中的超链接工作正常。但我不明白为什么在实例化序列化程序时必须发送请求。请帮我理解。
解决方案
它确实需要request
在上下文中构建绝对 URL
更具体地说,它使用get_url
序列化程序方法
def get_url(self, obj, view_name, request, format):
...
return self.reverse(view_name, kwargs=kwargs, request=request, format=format)
推荐阅读
- lodash - 为什么 orderBy 数字排序无法正常工作?
- bash - 如何使用 Bash 或 shell 脚本在 xmgrace 中绘制线
- python - 如何通过 ID 而不是索引位置选择项目
- javascript - 当值设置为 2 位小数时,toLocaleString 不起作用
- oracle - 如何找到 ORACLE 包中的过程的最后一个 DDL?
- android - 在键盘打开时将项目添加到 RecyclerView 时向下滚动
- pine-script - 在 previos 跨界蜡烛购买的松树脚本
- javascript - 如何消除粒子滑块中的加载效果?
- python - NotFoundError:[_Derived_]没有为操作定义梯度:Tensorflow 1.15.2 上的 Einsum
- r - 获取 edge_list 上两个顶点的度数索引和单独数据框列上的索引