嗨,我是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"
Run Code Online (Sandbox Code Playgroud)
我的路由器配置为:
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)
)
Run Code Online (Sandbox Code Playgroud)
我的观点定义为:
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
Run Code Online (Sandbox Code Playgroud)
api运行但是当我点击时:( myserver:8000/videos/SecondVideo/其中"SecondVideo"是视频的名称)我收到404错误.
有帮助吗?
我有两个需要合并的列表,但我看到的正常合并问题似乎没有帮助.
l1 = (0,1,2,3)
l2 = ('A','B','C','D')
Run Code Online (Sandbox Code Playgroud)
我需要它成为
((0,'A'), (2,'B'), (3,'C'))
Run Code Online (Sandbox Code Playgroud)