Python 在django rest框架中返回对成功POST请求的自定义响应

Python 在django rest框架中返回对成功POST请求的自定义响应,python,django,rest,django-rest-framework,Python,Django,Rest,Django Rest Framework,当用户通过POST请求点击API时,我想向用户返回一个自定义响应,这是成功的。以下是代码片段: 视图.py class BlogPostAPIView(mixins.CreateModelMixin,generics.ListAPIView): # lookup_field = 'pk' serializer_class = BlogPostSerializer def get_queryset(self): return BlogPost.objects

当用户通过POST请求点击API时,我想向用户返回一个自定义响应,这是成功的。以下是代码片段: 视图.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)
app_name = 'postings'
urlpatterns = [
    re_path('^$', BlogPostAPIView.as_view(),name='post-create'),
    re_path('^(?P<pk>\d+)/$', BlogPostRudView.as_view(),name='post-rud'),
]
url.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)
app_name = 'postings'
urlpatterns = [
    re_path('^$', BlogPostAPIView.as_view(),name='post-create'),
    re_path('^(?P<pk>\d+)/$', BlogPostRudView.as_view(),name='post-rud'),
]
app_name='posting'
URL模式=[
re_path(“^$”,BlogPostAPIView.as_view(),name='post-create'),
re_path(“^(?P\d+/$”,BlogPostRudView.as_view(),name='post-rud'),
]

现在它将post请求的详细信息作为成功响应返回,是否有任何方法可以基于我自己的自定义queryset返回其他响应?

您可以在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'),
]
app_name='posting'
URL模式=[
re_path(“^$”,BlogPostAPIView.as_view(),name='post-create'),
re_path(“^(?P\d+/$”,BlogPostRudView.as_view(),name='post-rud'),
re_path(“^hello/$”,hello.as_view(),name='hello'),
]
就这样

您还可以管理置换:
您可以在视图上使用serializer:

谢谢您的回答,但我正在寻找一种基于自定义queryset返回JSON响应的方法,如果您能提出一种方法,那就太棒了。