【发布时间】:2019-02-04 05:38:50
【问题描述】:
我使用 Django 1.11 + Django REST 框架。我正在尝试使用来自 Django REST Framework 的通用 RetrieveAPIView 获取有关不同记录的详细数据,并且服务器返回“HTTP 404 Not Found”结果,即没有数据。
models.py 文件:
class TestPage( models.Model):
title = models.CharField( size = 120)
counter = models.IntegerField( default = 0)
def __unicode__(self):
return u'' + self.title
serializers.py 文件:
class TestPageSerializer(serializers.ModelSerializer):
class Meta:
fields = ('id', 'title', 'counter',)
model = models.TestPage
urls.py 文件:
urlpatterns = [
url( r'^admin/', admin.site.urls),
url( r'^api/', include( 'rest_framework.urls')),
url( r'^api/', include( 'testpages.urls')),
]
testpages/urls.py 文件:
urlpatterns = [
url( r'^$', views.TestPageList.as_view()),
url( r'^(?P<id>)\d+/$', views.TestPageDetail.as_view()),
]
最后是 views.py 文件:
class TestPageList(generics.ListAPIView):
lookup_field = 'id'
queryset = TestPage.objects.all()
serializer_class = TestPageSerializer
class TestPageDetail(generics.RetrieveAPIView):
lookup_field = 'id'
queryset = TestPage.objects.all()
serializer_class = TestPageSerializer
# def get_object( self):
# print self.kwargs
如果我为列表中的所有记录请求“http://127.0.0.1:8000/api/”,服务器将返回所有记录。但是,如果我想使用“http://127.0.0.1:8000/api/1/”通过 id 获取记录,我会得到如下图所示的空结果。
[![在此处输入图片描述][1]][1]
如果我在最后 2 行中取消注释 get_object()-function,我可以在终端中看到 {'id': u''},即服务器获取空参数 'id'。
这段代码有什么问题?
【问题讨论】:
-
你可以将它们合并成一个
ViewSet
标签: django django-rest-framework