Django Ошибка структуры REST - имя не определено - PullRequest
0 голосов
/ 18 апреля 2020

У меня есть Django 2.2 с двумя приложениями - статус и обновления:

django_api | статус | API | обновления

В django_api / urls.py :

from django.contrib import admin
from django.urls import include, path

from updates.views import (
    json_example_view, 
    JsonCBV, 
    JsonCBV2, 
    SerializedListView, 
    SerializedDetailView
)

from status.api.views import 
StatusListSearchAPIView

urlpatterns = [
    path('admin/', admin.site.urls),
    path('api/status/', status.api.urls),
    path('api/updates/', updates.api.urls),

В django_api / status / api / views.py :

from rest_framework import generics
from rest_framework.views import APIView 
from rest_framework.response import Response
from .serializers import StatusSerializer 
from status.models import Status

class StatusListSearchAPIView(APIView):
    permission_classes = []
    authentication_classes = []

    def get(self, request, format = None):
        qs = Status.objects.all()
        serializer = StatusSeralizer(qs, many = True)
        return Response(serializer.data)

    def post(self, request, format=None):
        qs = Status.objects.all()
        serializer = StatusSeralizer(qs, many = True)
        return Response(serializer.data)

class StatusAPIView(generics.ListAPIView):
    permission_classes = []
    authentication_classes = []
    queryset = Status.objects.all()
    serializer_class = StatusSeralizer

    def get_queryset(self):
        qs = Status.objects.all()
        query = self.request.GET.get('q')
            if query is not None: 
                qs = qs.filter(content_icontains = query)
            return qs 

В django_api / status / api / serializers.py :

из rest_framework импортировать сериализаторы из django импортировать формы из status.models import Status

класс StatusSerializer (serializers.ModelSerializer): класс Meta: model = поля состояния = ['user', 'content', 'image']

    def validate_content(self, value):
        if len(value) > 10000:
            raise serializers.ValidationError("This is way too long.")
            return value

    def validate(self, data):
        content = data.get("content", None) 
        if content == "":
            content = None
        image = data.get("image", None)
        if content is None and image is None:
            raise serializers.ValidationError("content or image is required.")
        return data

Когда я запускаю python manage.py runserver, I получаю ошибку:

File "...\status\api\views.py", line 26, in StatusAPIView
serializer_class = StatusSeralizer
NameError: name 'StatusSeralizer' is not defined

Обновлено : как указано, это была орфографическая ошибка. Однако после того, как я импортировал status и из status.api импортировал URL-адреса, я получаю эту ошибку:

...\urls.py", line 39, in <module>
path('api/status/', status.api.urls),
...File "C:\Users\fbagi\AppData\Roaming\Python\Python37\site-packages\django\urls\conf.py", line 73, in _path
raise TypeError('view must be a callable or a list/tuple in the case of include().')
TypeError: view must be a callable or a list/tuple in the case of include().

Это мой status / api / urls.py :

from django.contrib import admin

из django .urls путь импорта

from .views import StatusAPIView, StatusCreateAPIView


 urlpatterns = [
    path('/', StatusAPIView.as_view()),
    path('create/', StatusCreateAPIView.as_view()),
    ]

Почему я получаю эту ошибку?

Ответы [ 2 ]

1 голос
/ 18 апреля 2020

Это опечатка:

Вы звоните: StatusSeralizer, но это: StatusSerializer

0 голосов
/ 18 апреля 2020

Я не вижу StatusCreateAPIView в вашем файле просмотров. Вы создали эту точку зрения? Попробуйте просто прокомментировать или удалить path('create/', StatusCreateAPIView.as_view()), и посмотрите, появляется ли по-прежнему ошибка.

...