【问题标题】:AttributeError: 'function' object has no attribute 'get_extra_actions' in function viewAttributeError:“函数”对象在函数视图中没有属性“get_extra_actions”
【发布时间】:2021-06-27 03:03:31
【问题描述】:

views.py

@api_view(['GET', 'POST'])
def poll(request):
    if request.method == "GET":
        question = Question.objects.all()
        serializer = QuestionSerializer(question, many=True)
        return JsonResponse(serializer.data, safe=False)
    elif request.method == "POST":
        data = JsonParser.parse(request.POST)
        serializer = QuestionSerializer(data=data)
        if serializer.is_valid():
            serializer.save()
            return JsonResponse(serializer.data, status=201)
        return JsonResponse(serializer.errors, status=400)

api_urls.py

from django.contrib import admin
from django.urls import path, include
from . import views
from rest_framework import routers


router = routers.DefaultRouter()
router.register(r'poll', views.poll, basename='poll')

urlpatterns = [
    path('poll/', include(router.urls)),
]

错误

 File "C:\Users\azhar\.virtualenvs\Django_and_Rest-YRrszWnq\lib\site-packages\rest_framework\routers.py", line 152, in get_routes
    extra_actions = viewset.get_extra_actions()
AttributeError: 'function' object has no attribute 'get_extra_actions'

许多解决方案可用于如何在视图类中使用 get_extra_actions,但我想在投票功能中使用它,请帮帮我

【问题讨论】:

标签: django django-rest-framework django-forms django-urls django-rest-viewsets


【解决方案1】:

pollfunction based view,而不是 viewset。所以你不能把它注册到路由器上。可以直接在视图中使用:

urlpatterns = [
    path('poll/', views.poll),
]

【讨论】:

    猜你喜欢
    • 2017-08-14
    • 2022-01-19
    • 1970-01-01
    • 1970-01-01
    • 2022-01-14
    • 2019-05-10
    • 2021-07-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多