我在使用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