django 405方法不允许

时间:2017-06-08 09:39:21

标签: django django-rest-framework

当我通过post方法请求时发生错误。

views.py

class ConceptForkView(ConceptBaseView, mixins.CreateModelMixin):
    print 'oclapi ConceptForkView111'

    def dispatch(self, request, *args, **kwargs):
        print 'oclapi ConceptForkView dispatch'
        return super(ConceptForkView, self).dispatch(request, *args, **kwargs)

    def post(self, request):
        print 'oclapi ConceptForkView post'

urls.py

url(r'^forking/$', ConceptForkView.as_view(), name='concept-forking'),

ConceptBaseView

class ConceptBaseView(ChildResourceMixin):

    lookup_field = 'concept'
    pk_field = 'mnemonic'
    model = Concept
    permission_classes = (CanViewParentDictionary,)
    child_list_attribute = 'concepts'

命令print 'oclapi ConceptForkView111'可以运行,但方法调度和发布不会运行。是什么原因?

我已经搜索了很多解决方案,但他们并没有为我工作。我怎么解决这个问题?谢谢。

2 个答案:

答案 0 :(得分:0)

尝试使用

def create(request, *args, **kwargs)
    ...

方法而不是

def post(self, request):
    ...

CreateModelMixin使用create方法而不是post方法

答案 1 :(得分:0)

请注意,mixin不是视图。您可能还必须从View继承。 Mixins通常是扩展功能的类,不是独立的。仅继承mixins的类可能无法正常工作,除非其中一个mixin实际上不是mixin。

请参阅:rest framework documentation。有CreateAPIView不仅从CreateModelMixin继承而且从GenericAPIView继承(您可能也应该继承它)。我们可以阅读GenericAPIView

  

此类扩展了REST框架的APIView类,为标准列表和详细信息视图添加了常用的行为。

因此,这种“通常需要的行为”对于您的班级表现得像视图一样重要。