AssertionError at /wel/ Ожидалось, что из представления будет возвращен `Response`, `HttpResponse` или `HttpStreamingResponse`, но получен `<класс 'NoneTyp

Я пытаюсь создать api, используя django rest framework, но столкнулся с вышеупомянутой проблемой

код моего models.py

from django.db import models

class React(models.Model):
    name=models.CharField(max_length=20)
    details=models.CharField(max_length=500)

и мой код views.py

from django.shortcuts import render
from rest_framework.views import APIView
from . models import *
from rest_framework.response import Response
from . serializer import *


class ReactView(APIView):
    serializer_class = ReactSerializer
    def get(self,request):
        for detail in React.objects.all():
            detail = [{'name':detail.name,'detail':detail.detail}]
            return Response(detail)
        


    def post(self,request):
        serializer=ReactSerializer(data=request.data)
        if serializer.is_valid(raise_exception = True):
            serializer.save()

Если React.objects.all() пуст, метод get вернет None и будет выдана эта ошибка. Просто добавьте к этому методу return Response({}, status.HTTP_204_NO_CONTENT), или что-нибудь, что имеет смысл для вашего приложения.

from rest_framework import status

class ReactView(APIView):
    serializer_class = ReactSerializer
    def get(self,request):
        for detail in React.objects.all():
            detail = [{'name':detail.name,'detail':detail.detail}]
            return Response(detail)
        return Response({}, status.HTTP_204_NO_CONTENT)
Вернуться на верх