AttributeError:类型对象“ DirectView”没有属性“ as_view”

时间:2018-12-11 00:58:00

标签: python django django-rest-framework

这是我的views.py代码

import

和我的urls.py

models.py

但是每当我尝试运行服务器时,都会出现错误

class DirectView(mixins.CreateModelMixin):
    serializer_class=DirectSerializer
    def perform_create(self, serializer):
        serializer.save(user=self.request.user)
    def post(self,request,*args,**kwargs):
        return self.create(request,*args,**kwargs)

我不明白问题是什么?

2 个答案:

答案 0 :(得分:3)

您的xPosition = [[button superview] superview].frame.origin.x; yPosition = [[button superview] superview].frame.origin.y; 类必须继承自Django中的DirectView类,才能使用as_view

View

如果您使用的是其余框架,则您这里需要的继承可能是CreateAPIViewGenericAPIView(带有from django.views.generic import View class DirectView(mixins.CreateModelMixin, View): ),与CreateModelMixin的API等效上面提到的课程。

答案 1 :(得分:0)

如果我们正在研究source code of mixins.CreateModelMixin,我们可以看到它是从object 内置类型 )继承的,因此它独立于任何 内置类型 以外的一种继承。

除此之外, Mixin 类是一种特殊的多重继承。您可以阅读有关Mixins here的更多信息。简而言之,Mixins为该类(种类为 helper类)提供了附加功能。


那么,该问题的解决方案是什么?

解决方案-1:使用CreateAPIView
由于您正在尝试扩展CreateModelMixin的功能,因此强烈建议将此DRF内置视图用作

from rest_framework import generics


class DirectView(generics.CreateAPIView):
    serializer_class = DirectSerializer

    def perform_create(self, serializer):
        serializer.save(user=self.request.user)

    def post(self, request, *args, **kwargs):
        return self.create(request, *args, **kwargs)



参考
1. What is a mixin, and why are they useful?
2. Python class inherits object