为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

Go
翻过高山走不出你 2021-09-14 09:46:42
这是我的 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.pypath('direct/',DirectView.as_view(),name='direct'),但是每当我尝试运行服务器时,我都会收到错误消息AttributeError: type object 'DirectView' has no attribute 'as_view'我不明白这是什么问题?
查看完整描述

2 回答

?
BIG阳

TA贡献1859条经验 获得超6个赞

您的DirectView类必须从ViewDjango 中的类继承才能使用as_view.


from django.views.generic import View


class DirectView(mixins.CreateModelMixin, View):

如果您使用的是 rest 框架,那么您在这里需要的继承可能是CreateAPIViewor GenericAPIView(with CreateModelMixin),它是上述View类的 API 等价物。


查看完整回答
反对 回复 2021-09-14
?
噜噜哒

TA贡献1784条经验 获得超7个赞

如果我们查看 的源代码mixins.CreateModelMixin,我们可以看到它是从object( builtin type )继承的,因此它独立于除builtin type之外的任何类型的继承。


除此之外,Mixin类是一种特殊的多重继承。你可以在这里阅读更多关于 Mixin 的信息。简而言之,Mixins 为类(类似于辅助类)提供了额外的功能。



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


解决方案 - 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)


查看完整回答
反对 回复 2021-09-14
  • 2 回答
  • 0 关注
  • 256 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信