Невозможно вернуть класс сериализатора в структуре сброса Django - PullRequest
0 голосов
/ 13 октября 2018

Я занимаюсь разработкой веб-API с использованием инфраструктуры Django REST.Я новичок в Django и Python.Сейчас у меня проблема в том, что я не могу вернуть класс сериализатора.

Это структура моего проекта

enter image description here

Я создал быстрый запуск/serializers.py со следующим определением

from django.contrib.auth.models import User, Group
from rest_framework import serializers


class UserSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = User
        fields = ('url', 'username', 'email', 'groups')


class GroupSerializer(serializers.HyperlinkedModelSerializer):
    class Meta:
        model = Group
        fields = ('url', 'name')

Это мое определение для быстрого старта / views.py

from django.shortcuts import render

# Create your views here.
from django.contrib.auth.models import User, Group
from rest_framework import viewsets
from quickstart.serializers import UserSerializer, GroupSerializer


class UserViewSet (viewsets.ModelViewSet):
    queryset = User.objects.all().order_by('-date_joined')
    serializer_class = UserSerializer


class GroupViewSet(viewsets.ModelViewSet):
    queryset = Group.objects.all()
    serializer_class = GroupSerializer

Это определение для быстрого старта / urls.py

from django.urls import path
from quickstart import views

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

Это urls.py внутри второй красной папки

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


urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('quickstart.urls'))
]

Когда я получаю доступ к этому URL (http://127.0.0.1:9191/users/) в браузере, я получаю эту ошибку.

TypeError at /users/
__init__() takes 1 positional argument but 2 were given
Request Method: GET
Request URL:    http://127.0.0.1:9191/users/
Django Version: 2.1.2
Exception Type: TypeError
Exception Value:    
__init__() takes 1 positional argument but 2 were given
Exception Location: C:\Users\Acer\PycharmProjects\MementoDjango\venv\lib\site-packages\django\core\handlers\base.py in _get_response, line 124
Python Executable:  C:\Users\Acer\PycharmProjects\MementoDjango\venv\Scripts\python.exe
Python Version: 3.6.5
Python Path:    
['C:\\Users\\Acer\\PycharmProjects\\MementoDjango',
 'C:\\Users\\Acer\\PycharmProjects\\MementoDjango\\venv\\Scripts\\python36.zip',
 'C:\\Users\\Acer\\AppData\\Local\\Programs\\Python\\Python36-32\\DLLs',
 'C:\\Users\\Acer\\AppData\\Local\\Programs\\Python\\Python36-32\\lib',
 'C:\\Users\\Acer\\AppData\\Local\\Programs\\Python\\Python36-32',
 'C:\\Users\\Acer\\PycharmProjects\\MementoDjango\\venv',
 'C:\\Users\\Acer\\PycharmProjects\\MementoDjango\\venv\\lib\\site-packages',
 'C:\\Users\\Acer\\PycharmProjects\\MementoDjango\\venv\\lib\\site-packages\\setuptools-39.1.0-py3.6.egg',
 'C:\\Users\\Acer\\PycharmProjects\\MementoDjango\\venv\\lib\\site-packages\\pip-10.0.1-py3.6.egg']
Server time:    Sat, 13 Oct 2018 20:33:23 +0000

enter image description here

Как это исправить?

1 Ответ

0 голосов
/ 13 октября 2018

Это не имеет ничего общего с "возвратом класса сериализатора".

Проблема в вашем urls.py;это совсем не то, как вы используете ViewSet там.Вам необходимо использовать его с маршрутизатором: см. документацию , в которой указан именно ваш вариант использования:

router = DefaultRouter()
router.register(r'users', UserViewSet, basename='user')
urlpatterns = router.urls
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...