猿问

404错误的Django Rest Framework自定义消息

我有一个基于类的通用视图:


class ProjectDetails(mixins.RetrieveModelMixin,

                     mixins.UpdateModelMixin,

                     generics.GenericAPIView):

    queryset = Project.objects.all()

    # Rest of definition

在我的urls.py,我有:


urlpatterns = [

    url(r'^(?P<pk>[0-9]+)/$', views.ProjectDetails.as_view())

]

使用不存在的ID调用API时,它将返回HTTP 404包含以下内容的响应:


{

    "detail": "Not found."

}

是否可以修改此响应?


我只需要为此视图自定义错误消息。


至尊宝的传说
浏览 140回答 2
2回答

炎炎设计

通过覆盖诸如的特定方法是可能的update,retrieve例如:from django.http import Http404from rest_framework.response import Responseclass ProjectDetails(mixins.RetrieveModelMixin,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;mixins.UpdateModelMixin,&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp;generics.GenericAPIView):&nbsp; &nbsp; queryset = Project.objects.all()&nbsp; &nbsp; def retrieve(self, request, *args, **kwargs):&nbsp; &nbsp; &nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return super().retrieve(request, *args, **kwargs)&nbsp; &nbsp; &nbsp; &nbsp; except Http404:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return Response(data={"cusom": "message"})&nbsp; &nbsp; def update(self, request, *args, **kwargs):&nbsp; &nbsp; &nbsp; &nbsp; try:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return super().update(request, *args, **kwargs)&nbsp; &nbsp; &nbsp; &nbsp; except Http404:&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; return Response(data={"cusom": "message"})
随时随地看视频慕课网APP

相关分类

Python
我要回答