当我将新条目发布到运行Django REST Framework的端点时,响应201不包含新创建的条目id / pk。我已经读过REST服务应该包含Location
标题中新资源的链接?
我怎样才能做到这一点?
我正在进行一些集成,并且希望能够立即请求新创建的资源,而不用再费力了。
答案 0 :(得分:1)
根据您使用的视图类型,您可以:
Response
,以便它包含新创建的资源。create(request, *args, **kwargs)
CreateModelMixin
我认为实现所需目标的最简单方法是使用CreateAPIView
。根据{{3}},
如果创建了一个对象,则返回201 Created响应,其中包含 对象的序列化表示作为响应的主体。 如果表示包含名为url的键,则为Location 响应的标题将填充该值。
因此,这个通用视图肯定会返回每个响应正文中的数据,但如果您有兴趣为每个资源获取 url ,那么您应该查看{{ 3}}。这些序列化程序的工作方式基本上与ModelSerializer
类似,只是它们在每个对象的表示中包含url
字段,允许您浏览资源。
此外,如果您只想获取每个已创建对象的id/pk
,我认为ModelSerializer
默认为每个与实际{{1}对应的表示设置id
字段在数据库中。不确定,但如果不是这样,你仍然可以通过指定要序列化的字段明确地要求它,即
pk