假设我有这个:
from django.core.urlresolvers import reverse
url = reverse('account-list')
假设这会导致URL:`/ account / list /'
如何添加到网址?我想将此网址设为:/account/list/1
(在其末尾添加pk值)。我在这里知道:Including a querystring in a django.core.urlresolvers reverse() call它解释了如何添加GET参数(例如?pk=1
但我想知道是否有适当的方法来添加到URL(不使用GET参数))
我正在使用DRF路由器:router = routers.DefaultRouter()router.register(r'users',views.UserViewSet),用户详细信息视图采用pk值。所以我想做url = reverse('user-list')并在其末尾添加/。
答案 0 :(得分:1)
如果您对详细视图有兴趣,则不应使用account-list
。假设你有一个单独的account-detail
视图(当你使用默认的ModelViewSets时,Django Rest Framework也会为你创建这些视图,就像它对account-list
一样):
from django.core.urlresolvers import reverse
u = reverse('account-detail', args=[1])
如果我正确理解你的问题,将是正确的解决方法。
您还可以处理命名的URL参数。对于带有slug
参数的以下网址规则:
url(r'/accounts/(?<slug>[a-fA-F0-9]+)/', name='account-detail', ...)
以下是您如何反转slug
等于something
的帐户的详细信息视图:
from django.core.urlresolvers import reverse
u = reverse('account-detail', kwargs={'slug': 'something'})