美国Django多个PK

2024-06-14 11:20:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我目前正在尝试使用Django Rest框架构建一个API。目前,我希望能够在一个url中有多个pk,但是当我尝试时,我得到一个错误:

django.core.exceptions.ImproperlyConfigured: "^video/(?P[0-9]+)/quiz/(?P[0-9]+)/list/$" is not a valid regular expression: redefinition of group name 'pk' as group 2; was group 1 at position 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联系到他们。在

有没有一个简单的方法来做到这一点,或是错过了正确的方法?在

谢谢你

编辑*以下是我的观点:

^{pr2}$

更新的URL:

    ###
    # 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)

新错误:

Could not resolve URL for hyperlinked relationship using view name "quizzes-list". You may have failed to include the related model in your API, or incorrectly configured the lookup_field attribute on this field.


Tags: nameviewurlasvideogroupquizviews
1条回答
网友
1楼 · 发布于 2024-06-14 11:20:49

必须为命名的捕获组指定一个唯一的名称。在

url(r'^video/(?P<pk1>[0-9]+)/quiz/(?P<pk2>[0-9]+)/list/$',
    views.QuizList.as_view(),
    name='quizzes-list'),

通过访问视图中相应的pk*

^{pr2}$

例如:

^{3}$

相关问题 更多 >