2009-11-22 22 views
11

Stavo cercando di utilizzare il tag modello di URL in Django, ma senza fortuna,URL tag modello in modello di Django

ho definito il mio urls.py come questo

urlpatterns = patterns('', 
    url(r'^analyse/$',    views.home, name="home"), 
    url(r'^analyse/index.html',  views.index, name="index"), 
    url(r'^analyse/setup.html',  views.setup, name="setup"), 
    url(r'^analyse/show.html',  views.show, name="show"), 
    url(r'^analyse/generate.html', views.generate, name="generate"), 

ho definito il modello di URL in mio punto di vista come questo

{% url 'show'%} 

poi ho ottenuto questo messaggio di errore

Rilevato un'eccezione durante il rendering: Reverse per '' show '' con argomenti '()' e argomenti parola chiave '{}' non trovati trovati.

originale Traceback (chiamata più recente scorso): File "/Library/Python/2.5/site-packages/django/template/debug.py", la linea 71, in render_node risultato = node.render (contesto) File "/Library/Python/2.5/site-packages/django/template/defaulttags.py", la linea 155, in render nodelist.append (node.render (contesto)) File "/ Library/Python/2.5/site-packages/django/template/defaulttags.py ", riga 382, ​​nel rendering raise e NoReverseMatch: Reverse per '' show '' con argomenti '()' e argomenti parola chiave '{}' non trovato.

Mi chiedo perché Django non è riuscito a renderizzare? qual è il modo giusto per definirlo nella tempalte?

risposta

0

Per quello che vale, ho avuto lo stesso problema e mentre non ricordo il motivo per cui ora, questo è stato risolto per me. Esempio da un'app SCRUM su cui stavo lavorando.

10

Il problema sono le tue virgolette singole intorno a "mostra". Cambia questo per "mostrare" e dovrebbe funzionare per te.

Vedi here

+1

Non è mai lavorato per me, con virgolette singole o doppie. Rimozione delle citazioni funziona, è strano. 1.5 funziona con virgolette doppie. –

+0

Le virgolette funzionano bene, Django 1.6. Assicurati di mettere i parametri * al di fuori * delle virgolette! Mi ci è voluto un sacco di tempo per trovare quell'errore, il sistema dei template ha generato felicemente URL vuoti senza alcuna indicazione di errore. – Bogatyr

1

Potrebbe essere necessario essere un po 'più specifico su cui visualizzare si sta cercando di usare:

{% url appname.views.show %} 
+0

Sto cercando di conoscere questa funzione: come si chiama? Ho cercato la documentazione di Django-Project su Templates e non fanno menzione di '{% url ....}' – CodyBugstein

3

È forse hanno alcuni punti di vista, non ancora implementato. Sembra che il motore di template cerchi di trovare tutte le viste dai pattern in urls.py quando viene utilizzato il filtro {% url ...%}.

Di solito mostra un errore per l'ultimo modello in urls.py.

Prova a commentare ogni modello di URL che non hai ancora implementato.

anche assicurarsi di utilizzare il percorso completo:

{% url myapp.views.home %} 

L'url del filtro modello sembra davvero instabile. Prova a mantenere future compatibility.

12

IMPORTANTE: questo era per django 1.4. A Django 1.5 è esattamente l'opposto.

provare a utilizzare i nomi URL senza virgolette

{% url show %} 

non questo

{% url 'show'%} 
+5

Cattiva idea. Questo modo di utilizzare il tag del modello di URL è deprecato e non funzionerà in Django 1.5. – glarrain

+0

Sì, è vero;) dovrei modificare :) – iskorum

Problemi correlati