2016-07-23 10 views
2

投稿で読んだことは、新しいリソース(POSTによって新しく作成された)のURLを指すLocationヘッダーを含めることが望ましいことです。私の問題は、私がそれをどのように含めるか分からないことです。私はビューにAPIViewと私のコードを使用して、クラスベースのビューを使用していますDjango Rest Frameworkにロケーションヘッダーを含める

は次のとおりです。

class ListArtists(APIView): 
    serializer_class = ArtistSerializer 
    def get(self, request, format=None): 
     _array = Artist.objects.filter() 
     serializer = self.serializer_class(_array, many=True) 
     if serializer.data: 
      _status = status.HTTP_200_OK 
     else: 
      _status = status.HTTP_204_NO_CONTENT 
     return Response(standardResponse(data=serializer.data), status=_status) 

    def post(self, request, format=None): 
     serializer = self.serializer_class(data=request.data) 
     if serializer.is_valid(): 
      serializer.save() 
      return Response(standardResponse(data=serializer.data), status=status.HTTP_201_CREATED) 
     else: 
      return Response(standardResponse(errors=serializer.errors)) 
artist = ListArtists.as_view() 

urls.py

from django.conf.urls import url, include 

from store import views 

urlpatterns = [ 
    url(r'^artists/', views.artist, name='artists-list'), 
] 

P.S.

私はこれは私が受け取ることに応答である私の高度なRESTクライアントを使用して要求を投げるたび:

Date: Sat, 23 Jul 2016 10:54:23 GMT 
Server: WSGIServer/0.1 Python/2.7.10 
Vary: Accept, Cookie 
X-Frame-Options: SAMEORIGIN 
Content-Type: application/json 
Allow: GET, POST, HEAD, OPTIONS 
+0

あなたが追加することができます[応答オブジェクトへのヘッダー](https://docs.djangoproject.com/en/1.9/ref/request-response/#setting-header-fields)を返す必要があります。 – solarissmoke

+0

コードを入力してください。 –

答えて

3

あなたはadd arbitrary headersResponse対象に、そのようにすることができます

def post(self, request, format=None): 
    serializer = self.serializer_class(data=request.data) 
    if serializer.is_valid(): 
     obj = serializer.save() 
     response = Response(standardResponse(data=serializer.data), 
          status=status.HTTP_201_CREATED) 
     # If you have defined a get_absolute_url method on your model, then 
     # you can use that to get a URL for the new object 
     response['Location'] = obj.get_absolute_url() 
     return response 
+0

これは私が探している答えの帽子です!ありがとう! –

関連する問題