断言错误,您将序列化器实例作为数据传递,但可能意味着传递序列化的“.data”或“.error”。表示

Jal*_*yev 4 django-views django-rest-framework

我正在学习drf 我使用它为迷你市场应用程序创建了 api。创建一些数据后,我尝试获取所有数据,但得到了断言错误,例如“您将序列化器实例作为数据传递,但可能意味着传递序列化.data.error.表示。”:(谁知道,我能做什么?

视图.py

@api_view(['GET'])
def view_items(request):
    
    # checking for the parameters from the URL
    items = Item.objects.all()

    # if there is something in items else raise error
    if items:
        return Response(ItemSerializer(items))
    else:
        return Response(status=status.HTTP_404_NOT_FOUND)
Run Code Online (Sandbox Code Playgroud)

urls.py

from django.urls import path
from . import views

urlpatterns = [
    path('', views.ApiOverview, name='home'),
    path('create/', views.add_items, name='add-items'),
    path('all/', views.view_items, name='view_items'),
]
Run Code Online (Sandbox Code Playgroud)

序列化器.py

from pyexpat import model
from django.db.models import fields
from rest_framework import serializers
from .models import Item

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = ('category', 'subcategory', 'name', 'amount')
Run Code Online (Sandbox Code Playgroud)

Wil*_*sem 5

正如错误所述,您无法在响应中返回序列化程序:

返回响应(ItemSerializer(项目

您可以返回序列化器的数据,因此:

@api_view(['GET'])
def view_items(request):
    # checking for the parameters from the URL
    items = Item.objects.all()
    serializer = ItemSerializer(items, many=True)

    # if there is something in items else raise error
    if items:
        return Response(serializer.data)
    else:
        return Response(status=status.HTTP_404_NOT_FOUND)
Run Code Online (Sandbox Code Playgroud)