我在一篇文章中读到,这是理想的,把它是一个很好的标准,包括一个位置头指向新资源的URL(通过POST新创建)。我的问题是我不知道如何包括它。
我使用的是基于类的视图,使用的是APIView,我在视图中的代码是:
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
型
3条答案
按热度按时间flmtquvp1#
您可以向
Response
对象添加任意头,如下所示:字符串
vvppvyoh2#
对于那些使用
drf
CreateModelMixin
的人来说,view
必须看起来像这样:如果你想在响应中使用一个空的body:
字符串
如果响应体必须包含序列化器中指定的对象数据:
型
总是开放的改进!
kyvafyod3#
CreateModelMixin
中的create
-函数的默认值调用self.get_success_headers(serializer.data)
(在这里实现)。我们可以看到,默认情况下,
api_settings.URL_FIELD_NAME
将被包括在内。URL_FIELD_NAME
默认情况下是url
。例如,当在
settings.py
中将此值更改为id
时,现在将在Location头中包含id
:字符串
结果POST请求:
型