끝점에 장고 REST 프레임 워크를 새로 게시 할 때 응답 201에 새로 만든 ID/pk가 포함되지 않습니다. REST 서비스가 Location
헤더의 새 리소스에 대한 링크를 포함하고 있다고 읽었습니다.생성 된 리소스의 ID가 응답 헤더에 없습니다.
어떻게하면됩니까?
저는 일부 통합을하고 있으며, 새로 만든 리소스를 더 이상 고의없이 요청할 수 있기를 원합니다.
끝점에 장고 REST 프레임 워크를 새로 게시 할 때 응답 201에 새로 만든 ID/pk가 포함되지 않습니다. REST 서비스가 Location
헤더의 새 리소스에 대한 링크를 포함하고 있다고 읽었습니다.생성 된 리소스의 ID가 응답 헤더에 없습니다.
어떻게하면됩니까?
저는 일부 통합을하고 있으며, 새로 만든 리소스를 더 이상 고의없이 요청할 수 있기를 원합니다.
보기의 유형에 따라 사용하고, 다음 중 하나를 수행 할 수 있습니다
Response
을 구축 할 수 있습니다.CreateAPIView
를 사용하는 것입니다 생각 CreateModelMixin
에서 제공 create(request, *args, **kwargs)
에 의존하고있다. documentation,
에 따른 오브젝트는이 응답의 본체와 객체의 직렬화 표현 으로 만든 201 응답을 반환 생성되는 경우. 표현에 url이라는 키가 포함되어 있으면 응답의 위치 헤더가 해당 값으로 채워집니다.
그래서 확실히이 일반적인보기는 각 응답의 본문에 데이터를 반환하지만 당신은 당신의 각 자원에 대한 URL을 얻기에 관심이 있다면, 당신은 아마 HyperlinkedModelSerializer 살펴 보셔야합니다. 이러한 시리얼 라이저는 기본적으로 ModelSerializer
처럼 작동하지만 각 객체의 표현에 url
필드를 포함하므로 리소스를 탐색 할 수 있습니다.
또한, 각 생성 된 객체의 id/pk
을 받고에만 관심이 있다면, 나는 ModelSerializer
데이터베이스에 실제 pk
에 해당하는 각각의 표현에 대한 디폴트로 id
필드를 설정 생각합니다. 확실하지 않은 경우에도 직렬화 할 필드를 지정하여 명시 적으로 요청할 수있는 경우 즉
class MySerializer(ModelSerializer):
class Meta:
model = MyModel
fields = ('id', 'name', 'color',)
감사합니다. 사용 사례에서는 serializer 클래스의'fields '에''id' '를 추가하는 것만 큼 간단했습니다. – dalgard