【问题标题】:Return custom response to successful POST request in django rest framework在 django rest 框架中返回对成功 POST 请求的自定义响应
【发布时间】:2020-05-11 18:44:47
【问题描述】:

当用户使用 POST 请求访问 API 并且成功时,我想向用户返回自定义响应。这是代码 sn-ps : views.py

class BlogPostAPIView(mixins.CreateModelMixin,generics.ListAPIView):
    # lookup_field = 'pk'
    serializer_class = BlogPostSerializer
    def get_queryset(self):
        return BlogPost.objects.all()
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)
    def post(self,request,*args,**kwargs):
        return self.create(request,*args,**kwargs)

urls.py

app_name = 'postings'
urlpatterns = [
    re_path('^$', BlogPostAPIView.as_view(),name='post-create'),
    re_path('^(?P<pk>\d+)/$', BlogPostRudView.as_view(),name='post-rud'),
]

现在它正在将发布请求的详细信息作为成功响应返回,有什么方法可以根据我自己的自定义查询集返回一些其他响应?

【问题讨论】:

    标签: python django rest django-rest-framework


    【解决方案1】:

    您可以在 views.py 上编写自定义 api。例如,我想;

    from rest_framework.views import APIView 
    from rest_framework.response import Response
    
    
    class Hello(APIView):
        @csrf_exempt
        def post(self, request):
            content = "Hi"
            type = "message" 
            return Reponse({"content":content,"type":type})
    

    然后定义 url。

    app_name = 'postings'
    urlpatterns = [
        re_path('^$', BlogPostAPIView.as_view(),name='post-create'),
        re_path('^(?P<pk>\d+)/$', BlogPostRudView.as_view(),name='post-rud'),
        re_path('^hello/$', Hello.as_view(),name='Hello'),
    ]
    

    就是这样。

    您还可以管理权限:https://www.django-rest-framework.org/api-guide/permissions/#setting-the-permission-policy 您可以在视图上使用序列化程序:https://www.django-rest-framework.org/api-guide/serializers/#saving-instances

    【讨论】:

    • 感谢您的回答,但我正在寻找一种基于自定义查询集返回 JSON 响应的方法,如果您能提出一种方法,那就太好了。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-01-23
    • 2021-01-30
    • 1970-01-01
    • 2017-03-01
    • 2016-01-01
    • 2018-12-20
    • 1970-01-01
    相关资源
    最近更新 更多