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

这是我的 views.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)

和我的 urls.py


path('direct/',DirectView.as_view(),name='direct'),

但是每当我尝试运行服务器时,我都会收到错误消息


AttributeError: type object 'DirectView' has no attribute 'as_view'

我不明白这是什么问题?


翻过高山走不出你
浏览 258回答 2
2回答

BIG阳

您的DirectView类必须从ViewDjango 中的类继承才能使用as_view.from django.views.generic import Viewclass DirectView(mixins.CreateModelMixin, View):如果您使用的是 rest 框架,那么您在这里需要的继承可能是CreateAPIViewor GenericAPIView(with CreateModelMixin),它是上述View类的 API 等价物。

噜噜哒

如果我们查看 的源代码mixins.CreateModelMixin,我们可以看到它是从object( builtin type )继承的,因此它独立于除builtin type之外的任何类型的继承。除此之外,Mixin类是一种特殊的多重继承。你可以在这里阅读更多关于 Mixin 的信息。简而言之,Mixins 为类(类似于辅助类)提供了额外的功能。那么,这个问题的解决方案是什么?解决方案 - 1:使用CreateAPIView由于您正在尝试扩展 的功能CreateModelMixin,因此强烈建议使用此 DRF 内置视图作为,from rest_framework import genericsclass 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)
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go