Python 在设置viewset时,我得到了一个错误AttributeError:';功能';对象没有属性';获得额外的行动';
我正在学习DRF,现在有点困惑。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
我像这样设置了
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)