Django Rest框架:Can';我无法克服这个奇怪的错误

Django Rest框架:Can';我无法克服这个奇怪的错误,django,django-rest-framework,Django,Django Rest Framework,尝试一个简单的请求: url.py from django.conf.urls import url from django.urls import include, path from rest_framework import routers from django.http import HttpResponse from rest_framework.urlpatterns import format_suffix_patterns from .public_views import N

尝试一个简单的请求:

url.py

from django.conf.urls import url
from django.urls import include, path
from rest_framework import routers
from django.http import HttpResponse
from rest_framework.urlpatterns import format_suffix_patterns
from .public_views import NavigationBar


router = routers.DefaultRouter()
router.register(r'navbar', NavigationBar, basename="NavigationBar")


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

]

urlpatterns = format_suffix_patterns(urlpatterns)
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.permissions import AllowAny
from rest_framework.throttling import UserRateThrottle
from rest_framework.decorators import api_view, throttle_classes
from . view_utils import *


class OncePerDayUserThrottle(UserRateThrottle):
    rate = '1/day'


class NavigationBar(APIView):
    """
    obtain up to date navigation bar (or side menu navigation) hierarchy.
    """
    permission_classes = ([AllowAny])

    def get(self, request, format=None):
        """
        get user addresses
        """
        return Response("this is a good response")

    def get_extra_actions(cls):
        return []
公共视图.py

from django.conf.urls import url
from django.urls import include, path
from rest_framework import routers
from django.http import HttpResponse
from rest_framework.urlpatterns import format_suffix_patterns
from .public_views import NavigationBar


router = routers.DefaultRouter()
router.register(r'navbar', NavigationBar, basename="NavigationBar")


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

]

urlpatterns = format_suffix_patterns(urlpatterns)
from django.shortcuts import render
from rest_framework.views import APIView
from rest_framework.permissions import AllowAny
from rest_framework.throttling import UserRateThrottle
from rest_framework.decorators import api_view, throttle_classes
from . view_utils import *


class OncePerDayUserThrottle(UserRateThrottle):
    rate = '1/day'


class NavigationBar(APIView):
    """
    obtain up to date navigation bar (or side menu navigation) hierarchy.
    """
    permission_classes = ([AllowAny])

    def get(self, request, format=None):
        """
        get user addresses
        """
        return Response("this is a good response")

    def get_extra_actions(cls):
        return []
当我调用
/v1/navbar
/v1/navbar/
端点时(我确实有我的主
URL.py
将所有
/v1/
流量引导到另一个专用
URL.py
),我得到以下错误:

AttributeError at /v1/navbar
type object 'NavigationBar' has no attribute 'get_extra_actions'
Request Method: GET
Request URL:    http://web/v1/navbar
Django Version: 2.1
Exception Type: AttributeError
Exception Value:    
type object 'NavigationBar' has no attribute 'get_extra_actions'
Exception Location: /usr/local/lib/python3.6/site-packages/rest_framework/routers.py in get_routes, line 200
Python Executable:  /usr/local/bin/uwsgi
Python Version: 3.6.8
Python Path:    
['.',
 '',
 '/usr/local/lib/python36.zip',
 '/usr/local/lib/python3.6',
 '/usr/local/lib/python3.6/lib-dynload',
 '/usr/local/lib/python3.6/site-packages']
Server time:    Tue, 2 Jul 2019 17:12:27 +0000

如果有人给我指点,我将不胜感激。此外,我无法理解为什么错误消息包含
请求URL:http://web/v1/navbar
web
不是我正在使用的URL的一部分时的指示。
web
来自哪里???我只是使用
/v1/navbar/
点击端点。

这里有两件事不对。首先,路由器用于视图集,而不是简单视图。其次,对于基于类的视图,您需要通过urlconf中的
as_view()
方法调用它。所以,扔掉那些路由器的东西,然后做:

urlpatterns = [
    path(r'navbar', NavigationBar.as_view(), name="NavigationBar")
]
注意,现在您不使用路由器,您根本不需要那种
get\u extra\u actions
方法