обратни URL адреси за базиран на клас Django изглед

Опитвам се да направя нещо като:

в urls.py:

...
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo:''})
...

в views.py

..
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id, 'foo':'bar'}))
...

Но това изглежда не работи. Получавам обратно за „video_detail“ с аргументи „()“ и ключови аргументи „{'pk': 13240L, 'foo': 'bar}' не са намерени.

Това обаче работи:

....
HttpResponseRedirect(reverse('video_detail', kwargs={'pk': id}))
...

т.е. премахване на foo: бар от обратното повикване. Какъв е правилният начин да направите това и да подадете допълнителни аргументи в обратния url?


person 9-bits    schedule 21.12.2011    source източник


Отговори (1)


reverse е функция, която създава URL.

Тъй като сте посочили само pk модел във вашите URL шаблони, можете да използвате само pk като аргумент на reverse (наистина няма смисъл да добавяте foo, тъй като генерираният url ще бъде абсолютно същият за всяка стойност foo). Можете да добавите foo към шаблона на URL адреса или да създадете множество именувани URL адреси, т.е.

url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail', kwargs={'foo':''})
url(r'^(?P<pk>\d+)/$', VideoDetailView.as_view(), name='video_detail2', kwargs={'foo':'bar'})

or

url(r'^(?P<pk>\d+)/(?P<foo>\w+)/$', VideoDetailView.as_view(), name='video_detail')
person bmihelac    schedule 21.12.2011