Python 在设置viewset时,我得到了一个错误AttributeError:';功能';对象没有属性';获得额外的行动';

Python 在设置viewset时,我得到了一个错误AttributeError:';功能';对象没有属性';获得额外的行动';,python,django,serialization,django-models,django-rest-framework,Python,Django,Serialization,Django Models,Django Rest Framework,我正在学习DRF,现在有点困惑。 我像这样设置了QuestionView和QuestionSerializer 视图.py class QuestionView(viewsets.ModelViewSet) : queryset = models.Question.objects.all() serializer_class = QuestionSerializer def list(self, request, *args, **kwargs): se

我正在学习DRF,现在有点困惑。
我像这样设置了
QuestionView
QuestionSerializer

视图.py

class QuestionView(viewsets.ModelViewSet) :
    queryset = models.Question.objects.all()
    serializer_class = QuestionSerializer

    def list(self, request, *args, **kwargs):
        serializer = QuestionSerializer(models.Question.objects.all())
        return Response(serializer.data)
序列化程序.py

class QuestionSerializer(serializers.ModelSerializer):
    class Meta:
        model= Question
        fields= ("question_text", "owner", "pub_date")
router = routers.DefaultRouter()
router.register('profile', cebula_views.SettingView)
router.register('question', cebula_views.QuestionView.as_view({
    'get':'list',

}), 'userpage-question')

urlpatterns = [
    ...
    url(r'^', include(router.urls)),
    ...
] 
url.py

class QuestionSerializer(serializers.ModelSerializer):
    class Meta:
        model= Question
        fields= ("question_text", "owner", "pub_date")
router = routers.DefaultRouter()
router.register('profile', cebula_views.SettingView)
router.register('question', cebula_views.QuestionView.as_view({
    'get':'list',

}), 'userpage-question')

urlpatterns = [
    ...
    url(r'^', include(router.urls)),
    ...
] 
文件“C:\Users\1Sun\Cebula3\businessproject\url.py”,第34行,在 url(r'^',包括(router.url)),文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\rest\u framework\routers.py”, 第101行,在URL中 self.\u url=self.get\u url()文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\rest\u framework\routers.py”, 第363行,在get_URL中 URL=super(DefaultRouter,self)。获取\u url()文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\rest\u framework\routers.py”, 第261行,在get_URL中 routes=self.get\u routes(viewset)文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\rest\u framework\routers.py”, 176号线,在get_路线 extra_actions=viewset.get_extra_actions()AttributeError:“function”对象没有属性“get_extra_actions”

在我看来,我应该在
QuestionView
类中编写
get\u extra\u actions
方法,如果是,我该如何编写?像这样

def get_extra_actions() : 
    return  ???
如果没有,问题是什么

[编辑]

当我删除url部分的.as_view()并像
router.register('question',cebula_views.QuestionView,'userpage question')那样编写时

错误是

由.wrapper在0x00000283172D3D08>回溯(most)处启动的线程中存在未处理的异常 最近调用(最后一次):文件 “C:\Users\1Sun\AppData\Local\Programs\Python\36\lib\site packages\django\utils\autoreload.py”, 第225行,在包装中 fn(*args,**kwargs)文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\core\management\commands\runserver.py”, 第120行,在内部运行 self.check(display\u num\u errors=True)文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\core\management\base.py”, 第364行,检查中 include_deployment_checks=include_deployment_checks,文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\core\management\base.py”, 第351行,运行中检查 返回检查。运行检查(**kwargs)文件“C:\Users\1Sun\AppData\Local\Programs\Python36\lib\site packages\django\core\checks\registry.py”, 第73行,运行检查 新建\u errors=check(app\u configs=app\u configs)文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\core\checks\url.py”, 第13行,在check\u url\u config中 返回检查\u解析器(解析器)文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\core\checks\url.py”, 第23行,检查旋转变压器 返回check\u method()文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\url\resolvers.py”, 第397行,检查中 对于self.url\u模式中的模式:文件“C:\Users\1Sun\AppData\Local\Programs\Python36\lib\site packages\django\utils\functional.py”, 第36行,在获取 res=instance.dict[self.name]=self.func(实例)文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\url\resolvers.py”, 第536行,url_模式 patterns=getattr(self.urlconf_模块,“urlpatterns”,self.urlconf_模块)文件 “C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\utils\functional.py”, 第36行,在获取 res=instance.dict[self.name]=self.func(实例)文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\url\resolvers.py”, 第529行,在urlconf_模块中 返回导入模块(self.urlconf_名称)文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\importlib\uuuuu init\uuuuu.py”, 第126行,在导入模块中 返回_bootstrap._gcd_导入(名称[级别:],包,级别)文件“”,第994行,在_gcd_导入文件中 “”第971行,在“查找”和“加载文件”中 “”,第955行,在“查找”和“加载”中解锁 文件“”,第665行,在\u load\u unlocked中
文件“”,第678行,在 exec_模块文件“”,第219行,在 _调用\u,并删除文件“C:\Users\1Sun\Cebula3\businessproject\url.py”,第31行,在 url(r'^cebula/',include('cebula.url',namespace='cebula')),文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\site packages\django\url\conf.py”, 第34行,包括 urlconf_module=import_module(urlconf_module)文件“C:\Users\1Sun\AppData\Local\Programs\Python\Python36\lib\importlib_uuuinit\uuuuu.py”, 第126行,在导入模块中 返回_bootstrap._gcd_导入(名称[级别:],包,级别)文件“”,第994行,在_gcd_导入文件中 “”第971行,在“查找”和“加载文件”中 “”,第955行,在“查找”和“加载”中解锁 文件“”,第665行,在\u load\u unlocked中
文件“”,第678行,在 exec_模块文件“”,第219行,在 _使用\u框架\u调用\u删除文件“C:\Users\1Sun\Cebula3\cebula\url.py”,第15行,在中 url(r“^QUEST/$”,views.QuestionView.as_view(),name='question'),文件 “C:\Users\1Sun\AppData\Local\Programs\Python\36\lib\site packages\rest\u framework\viewsets.py”, 第68行,在as_视图中 raise TypeError(“类型错误时必须提供
操作
参数”:调用时必须提供
操作
参数 视图集上的
.as\u view()
。例如
.as\u view({'get':'list')


在路由器中注册视图集时,不必使用
.as\u view()
方法


所以,应该是我不知道为什么,但我也无法使用路由器创建路由(带有.as_view())
router.register('question', cebula_views.QuestionView, 'userpage-question')
    from django.urls import path
    from rest_framework.urlpatterns import format_suffix_patterns
    from .views import QuestionView

    urlpatterns = [
     path('QuestionView/', QuestionView),
    ]

    urlpatterns = format_suffix_patterns(urlpatterns)