Django REST Framework TypeError: register() missing 1 required positional argument: 'viewset'

Django REST Framework TypeError: register() missing 1 required positional argument: 'viewset'

我正在学习 Django REST Framework,我正在尝试使用一个简单的 ViewSet,但是当我尝试 运行 服务器

时,控制台上一直出现此错误
  File "C:\Users\anahu\Projects\guatudu-api\api\api\locations\urls.py", line 13, in <module>
    router.register(r'countries', country_views.CountryViewSet, basename='country')
TypeError: register() missing 1 required positional argument: 'viewset'

这是我的应用 urls.py

"""Locations Urls"""

# Django
from django.urls import path, include

# Django Rest Framework
from rest_framework.routers import DefaultRouter

# Views
from api.locations.views import countries as country_views

router = DefaultRouter
router.register(r'countries', country_views.CountryViewSet, basename='country')

urlpatterns = router.urls

这是我的视图集

"""Countries view"""

# Django REST Framework
from rest_framework import viewsets

# Serializers
from api.locations.serializers import CountryModelSerializer

# Models
from api.locations.models import Country

class CountryViewSet(viewsets.ModelViewSet):
    """Country viewset"""

    queryset = Country.objects.all()
    serializer_class = CountryModelSerializer

这是我的序列化器

"""Country Serializers"""

#Django Rest Framework
from rest_framework import serializers
from rest_framework.validators import UniqueValidator

#Model
from api.locations.models import Country

class CountryModelSerializer(serializers.ModelSerializer):
    """Country Model Serializer"""

    class Meta:
        """Meta class"""
        model = Country
        fields = (
            'id',
            'name',
            'image'
        )

是非常基本的东西,但我不断收到该错误。我所能想象的是,出于某种原因,我没有从 urls.py 上正确获取 ViewSet?希望大家帮帮我

尝试更改您的 url:

"""Locations Urls"""

# Django
from django.urls import path, include

# Django Rest Framework
from rest_framework.routers import DefaultRouter

# Views
from api.locations.views import countries as country_views

router = DefaultRouter()
router.register(r'countries', country_views.CountryViewSet, basename='country')

urlpatterns = router.urls

这是一个简单的错误。

router = DefaultRouter
router.register(r'countries', country_views.CountryViewSet, basename='country')

将此代码更改为:

router = DefaultRouter()
router.register(r'countries', country_views.CountryViewSet, basename='country')

DefaultRouter() 是一个函数。