我目前正在尝试使用 Django Rest Framework 构建一个 API。目前我希望能够在一个 url 中拥有多个 pks,但是当我尝试时出现错误:
django.core.exceptions.ImproperlyConfigured:
“^video/(?P[0-9]+)/quiz/(?P[0-9]+)/list/$”无效
正则表达式:将组名“pk”重新定义为组2;曾是
第 1 组第 31 位
这是我的网址:
url(r'^video/(?P<pk>[0-9]+)/quiz/(?P<pk>[0-9]+)/list/$',
views.QuizList.as_view(),
name='quizzes-list'),
url(r'^video/(?P<pk>[0-9]+)/quiz/(?P<pk>[0-9]+)/detail/$',
views.QuizDetail.as_view(),
name='quizzes-detail'),
我将对一个视频进行多个测验,并希望能够通过我的网址中的某个 pk 到达它们。
有没有一个简单的方法可以做到这一点,或者我缺少正确的方法来做到这一点?
谢谢
编辑*这是我的观点:
class VideoList(generics.ListCreateAPIView):
queryset = Video.objects.all()
serializer_class = VideoSerializer
class VideoDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Video.objects.all()
serializer_class = VideoSerializer
# quiz
class QuizList(generics.ListCreateAPIView):
queryset = Quizzes.objects.all()
serializer_class = QuizSerializer
class QuizDetail(generics.RetrieveUpdateDestroyAPIView):
queryset = Quizzes.objects.all()
serializer_class = QuizSerializer
更新后的网址:
###
# Quiz urls
###
url(r'^video/(?P<pk1>[0-9]+)/quiz/(?P<pk2>[0-9]+)/list/$',
views.QuizList.as_view(),
name='quizzes-list'),
url(r'^video/(?P<pk1>[0-9]+)/quiz/(?P<pk2>[0-9]+)/detail/$',
views.QuizDetail.as_view(),
name='quizzes-detail'),
更新观点:
class QuizList(generics.ListCreateAPIView):
queryset = Quizzes.objects.all()
serializer_class = QuizSerializer
def get(self, request, *args, **kwargs):
pk1 = kwargs.get('pk1', None)
pk2 = kwargs.get('pk2', None)
print(pk1)
print(pk2)
return self.list(request, *args, **kwargs)
新错误:
无法使用视图名称解析超链接关系的 URL
“测验列表”。您可能未能将相关模型包含在
您的 API,或者配置不正确lookup_field
属性上
这个领域。