Djangorest框架与GET和POST相同的通用创建视图

时间:2017-05-25 02:28:36

标签: python django url django-rest-framework httpverbs

我使用Generic CreateAPIView将模型保存在数据库中。这是我的代码:

class AppointmentCreateAPIView(generics.CreateAPIView):
    permission_classes = (AppointmentCreatePermission,)
    queryset = Appointment.objects.all()
    serializer_class = AppointmentSerializer

在我的urls.py文件中,我有这个:

urlpatterns[
    url(r'^appointments/create', AppointmentCreateAPIView.as_view()),
]

这个url显然支持POST操作。但是,我想使用这个相同的URL来处理GET请求,该请求将获取填充约会创建表单所需的数据。我知道我可以使用单独的网址来获取和发布,但这不是我想要的。是否有可能保持相同的URL,但使用不同的HTTP Verb,视图将能够处理GET和POST请求?

1 个答案:

答案 0 :(得分:1)

您可以通过在视图中手动添加get方法来执行此操作,它看起来像这样。下面的代码可能不起作用,但会给你一般的想法。

from rest_framework.response import Response

class AppointmentCreateAPIView(generics.CreateAPIView):
    permission_classes = (AppointmentCreatePermission,)
    queryset = Appointment.objects.all()
    serializer_class = AppointmentSerializer

    def get(self, request, *args, **kwargs):
        serializer = AppointmentSerializer({your_data})
        return Response(serializer.data)