2014-12-09 2 views
0

끝점에 장고 REST 프레임 워크를 새로 게시 할 때 응답 201에 새로 만든 ID/pk가 포함되지 않습니다. REST 서비스가 Location 헤더의 새 리소스에 대한 링크를 포함하고 있다고 읽었습니다.생성 된 리소스의 ID가 응답 헤더에 없습니다.

어떻게하면됩니까?

저는 일부 통합을하고 있으며, 새로 만든 리소스를 더 이상 고의없이 요청할 수 있기를 원합니다.

답변

1

보기의 유형에 따라 사용하고, 다음 중 하나를 수행 할 수 있습니다

  • 수동으로 새로 만든 리소스를 포함하도록 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',) 
+0

감사합니다. 사용 사례에서는 serializer 클래스의'fields '에''id' '를 추가하는 것만 큼 간단했습니다. – dalgard

관련 문제