嗨我是Django和Django-Rest-Framework的新手。我已經閱讀了教程。我試圖做的(作爲學習練習)是基於除主鍵以外的字段返回對象。按主鍵以外的字段獲取對象
myserver:8000/videos
返回所有視頻的列表。myserver:8000/videos/1
收益與1
主鍵的視頻,我想什麼做的是:
myserver:8000/videos/:videoname
返回視頻裏videoname = videoname
我有以下的影片模式:
class Videos (models.Model):
videoID = models.IntegerField(blank=True, null=True)
videoName = models.CharField(max_length=20)
class Meta:
app_label="quickstart"
我的路由器配置爲:
video_detail = views.VideoDetailView.as_view({
'get':'list'
})
urlpatterns = patterns('',
url(r'^', include(router.urls)),
url(r'^api-auth/', include('rest_framework.urls', namespace='rest_framework')),
url(r'^videos/(?P<videoName>[^/]+)/$', video_detail)
)
而我的觀點被定義爲:
class VideoDetailView(viewsets.ModelViewSet):
serializer_class = VideosSerializer
def get_queryset(self):
videoName = self.kwargs.get(videoName, None)
queryset = super (VideoDetailView,self).get_queryset()
if videoName:
queryset = queryset.filter(videoName=videoName)
return queryset
的API運行,但是當我打:myserver:8000/videos/SecondVideo/
(其中「SecondVideo」是視頻的名字)我收到一個404錯誤。
任何幫助?
我繼續查詢的表和look_up_kwargs字段的字段,添加的lookup_field和我仍然獲得了404任何其他的想法?或者爲什麼這不起作用的原因? – rackhamup
這對我來說一旦我得到了正確的URL。對於Django的新用戶,以下是您用來查看視頻的網址:videoName ='SecondVideo':http:// localhost:8000/videos/SecondVideo /?format = json – Luke