2012-08-29 11 views
5

Mam url zdefiniowane następująco:Django {% url%} tag bez parametrów

url(r'^details/(?P<id>\d+)$', DetailView.as_view(), name='detail_view'), 

W moich szablonów, chcę być w stanie uzyskać następujący adres: /details/ z określonym adresem URL.

Próbowałem {% url detail_view %}, ale pojawia się błąd, ponieważ nie określam parametru id.

Potrzebuję adresu URL bez identyfikatora, ponieważ będę go dołączał przy użyciu JS.

Jak mogę to zrobić?

+2

Jaki byłby cel? Tego adresu URL nie można dopasować, jeśli nie ma parametru "id", dlaczego więc chcesz utworzyć do niego link? Może próbujesz rozwiązać inny problem, a Twoje rozwiązanie nie jest właściwe? –

+0

Dołożę identyfikator przy użyciu javascript, ale chciałbym mieć URL jako zmienną js. – AlexBrand

+1

Zawsze można użyć odwrotności z 'id = -1' (które i tak nie spodziewałbyś się być identyfikatorem) i zastąpić prawostronnie -1 odpowiednim identyfikatorem kiedy jest to potrzebne. Wydaje się bardzo hackish do mnie, jeśli pytasz mnie, ale zawsze lepiej niż zdefiniowanie innego adresu URL. –

Odpowiedz

6

Wystarczy dodać tę linię do urls.py:

url(r'^details/$', DetailView.as_view(), name='detail_view'), 

lub:

url(r'^details/(?P<id>\d*)$', DetailView.as_view(), name='detail_view'), 

(jest czystsze rozwiązanie - dzięki Thomas Orozco)

Musisz aby określić, że id jest opcjonalne w funkcji widoku:

def view(request, id=None): 
+0

Uwaga: dwa urlwzterns będą musiały mieć unikalną nazwę, więc jeśli nazwiesz to "detail_view", zmień nazwę oryginału na "detail_view_with_id". –

+2

Jeśli zamierzasz zmodyfikować widok, aby zaakceptować parametr opcjonalny, myślę, że równie dobrze możesz ustawić parametr jako opcjonalny: 'r '^ details/(? P \ d *) $''. –

+0

jak określić parametr id w szablonie '{% url detail_view%} – user1629366

Powiązane problemy