2012-08-29 22 views
5

Ho un URL definito come segue:django {% url%} tag senza parametri

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

Nei miei modelli, voglio essere in grado di ottenere il seguente url: /details/ dall'URL definito.

Ho provato {% url detail_view %}, ma ottengo un errore poiché non sto specificando il parametro id.

Ho bisogno dell'URL senza ID perché lo aggiungerò usando JS.

Come posso realizzare questo?

+2

Quale sarebbe lo scopo? Questo URL non può essere abbinato se non esiste un parametro 'id', quindi perché vorresti creare un link ad esso? Forse stai cercando di risolvere un altro problema e la tua soluzione non è quella giusta? –

+0

Aggiungerò l'ID usando javascript, ma mi piacerebbe avere l'URL come variabile js. – AlexBrand

+1

Si può sempre usare il contrario con 'id = -1' (che non ci si aspetterebbe di essere un ID) e sostituire il più a destra -1 con l'ID corretto quando è necessario. Mi sembra molto schifo se me lo chiedi, ma sempre meglio che definire un altro URL. –

risposta

6

Basta aggiungere questa linea al vostro urls.py:

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

o:

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

(Si tratta di una soluzione più pulita - grazie a Thomas Orozco)

Avrete bisogno per specificare che id è facoltativo nella funzione di visualizzazione:

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

Nota: i due urlpattern dovranno avere un nome univoco, quindi se lo chiami "detail_view", rinomina il tuo originale con qualcosa come "detail_view_with_id". –

+2

Se hai intenzione di modificare la vista per accettare un parametro opzionale, penso che potresti anche rendere il parametro opzionale: 'r '^ details/(? P \ d *) $''. –

+0

come si specifica il parametro id nel modello '{% url detail_view%}' – user1629366

Problemi correlati