【问题标题】:django-rest disalow get requests for ModelViewSetdjango-rest 禁止获取对 ModelViewSet 的请求
【发布时间】:2014-05-05 14:12:06
【问题描述】:

我只希望使用 POST 将数据发送到此 api 端点。有没有办法设置允许哪些请求方法?

class FooViewSet(viewsets.ModelViewSet):
    queryset = Foo.objects.all()
    serializer_class = FooSerializer

【问题讨论】:

    标签: django django-rest-framework


    【解决方案1】:

    您需要整个ViewSet 还是普通的GenericView 就足够了?您可以使用CreateAPIView

    例子:

    class FooCreate(generics.CreateAPIView):
        Model = Foo
        serializer_class = FooSerializer
    

    编辑:

    如果您确实需要使用ViewSet,您可以创建一个只处理post 请求的自定义路由器。文档here,包括一个只读(即get)示例。

    【讨论】:

    • 谢谢,CreateAPIView 正是我所需要的。
    【解决方案2】:

    可能有更好的解决方案,但我通常做的是

    if request.method != 'POST':
           return Http404
    

    但这似乎有你需要的答案: https://docs.djangoproject.com/en/dev/topics/http/decorators/

    【讨论】:

    • 请注意:装饰器在基于类的视图与基于函数的视图中的工作方式略有不同。 Docs.
    • 是的,从我的第一个回复中可以看出,我经常使用基于函数的视图...:)
    猜你喜欢
    • 1970-01-01
    • 2016-11-21
    • 2018-06-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-03-01
    • 2021-12-15
    相关资源
    最近更新 更多