【发布时间】:2015-05-03 12:50:49
【问题描述】:
如何使用 DRF 的 reverse 从 SimpleRouter 调用复杂的 URL?
我的网址在两个地方,一个是团队的,一个是游戏的,如下:
league.urls:
url(r'^team/', include('teams.urls')),
team.urls:
router = SimpleRouter()
router.register(r'game', GameViewSet, 'games')
我正在尝试reverse 网址更新游戏。基于 DRF SimpleRouter,这应该是“/team/{pk}/game/{pk}”
我的测试正在调用:
url = reverse('games-detail', args=[team.pk, game.pk])
但我收到以下错误:
raise error, v # invalid expression
error: redefinition of group name u'pk' as group 2; was group 1
【问题讨论】:
-
您是否尝试过将它们声明为
kwargs并以这种方式调用 URL? -
@AronYsidoro 谢谢 - 这可能是问题所在。我可以调用 url = reverse('teams-detail', kwargs= { 'pk': game.team.pk, 'pk': game.pk }) 在这两个级别上,我都使用 pk 来识别团队/游戏。这是一个问题还是有其他方法可以使用 kwargs 调用 URL?这不起作用 - 给我和以前一样的错误。所以要么我遗漏了一些东西,要么必须有更好的方法来调用这个
reverse:)。再次感谢您的帮助!
标签: django django-rest-framework django-urls