Django REST Framework TypeError: register () отсутствует 1 обязательный позиционный аргумент: 'viewset' - PullRequest
2 голосов
/ 20 января 2020

Я изучаю 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'

это URL моего приложения. 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

А это мой ViewSet

"""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'
        )

довольно простой c материал, но я продолжаю получать эта ошибка. Все, что я могу себе представить, это то, что по какой-то причине я не получаю ViewSet из urls.py правильно? Я надеюсь, что вы, ребята, можете помочь мне

1 Ответ

4 голосов
/ 20 января 2020

Попробуйте изменить ваш 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
...