【问题标题】:Django Rest Framework reverse and SimpleRouterDjango Rest Framework 反向和 SimpleRouter
【发布时间】:2015-05-03 12:50:49
【问题描述】:

如何使用 DRF 的 reverseSimpleRouter 调用复杂的 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


【解决方案1】:

YPCrumble,您可能想用不同的kwargs 调用URLURL 正则表达式以处理 kwargs 的方式工作。比如:

# python reverse url
url = reverse('games-detail', kwargs={'team_pk': 1, 'group_pk':1})

# url regex
url(
    r'^team/(?P<team_pk>\d+)/group/(?P<group_pk>\d+)/$',
    view.SimpleRouterDetailView.as_view(),
    name='games-detail'
)

【讨论】:

猜你喜欢
  • 2018-02-20
  • 1970-01-01
  • 2012-12-25
  • 2023-03-05
  • 2017-05-26
  • 2020-08-10
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多