我在使用Django Rest框架时有一个非常奇怪的错误。当我使用retrieveapiew并找到数据时,我得到一个错误,当找不到数据时,我得到一个显示

{
"detail": "Not found."
}

网址.py
from django.conf.urls import url, include
from django.contrib import admin

from items.views import ItemRetrieveView


urlpatterns = [
    url(r'^admin/', admin.site.urls),
    url(r'^api/(?P<pk>\d+)/$', ItemRetrieveView.as_view()),

]

seriliazers.py系列
from rest_framework import serializers
from .models import Item

class ItemSerializer(serializers.ModelSerializer):
    class Meta:
        model = Item
        fields = ('pk','name','desc','created')

当我将ReopeAppVIEW更改为RealUpDATEDeavyAppIVIEW时,即使数据不存在,也总是不能调用“STR”对象。
from django.shortcuts import render
from rest_framework import generics

from .models import Item
from .serializers import ItemSerializer

class ItemRetrieveView(generics.RetrieveAPIView):

    lookup_field = 'pk'
    queryset = Item.objects.all()
    serializer_class = 'ItemSerializer'

模型.py
from django.db import models

class Item(models.Model):
    name = models.CharField(max_length = 30)
    created = models.DateField(auto_now_add = True)
    desc = models.CharField(max_length = 30)

    def __str__(self):
        return '%s' % (self.name)

最佳答案

serializer_class = 'ItemSerializer'

'ItemSerializer'替换ItemSerializer,需要类而不是字符串
serializer_类-应用于验证和反序列化输入以及序列化输出的序列化程序类。通常,必须设置此属性,或重写get_serializer_class()方法。
获取序列化程序类(自身)
返回应用于序列化程序的类。默认返回序列化程序类属性。
您可以返回类ItemSerializer或重写get_serializer_class(self),如下所示:
def get_serializer_class(self):
    return ItemSerializer

10-02 06:18
查看更多