2009-11-22 28 views
11

yo estaba tratando de utilizar la etiqueta plantilla de URL en Django, pero sin suerte,url etiqueta de plantilla en la plantilla de Django

que define mi urls.py como esto

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"), 

he definido el patrón de URL en mi vista como esta

{% url 'show'%} 

entonces me consiguió este mensaje de error

Capturó una excepción al representar: Invertir para '' mostrar '' con argumentos '()' y argumentos de palabras clave '{}' no encontrado.

original Rastreo (llamada más reciente última): File "/Library/Python/2.5/site-packages/django/template/debug.py", línea 71, en render_node resultado = node.render (contexto) File "/Library/Python/2.5/site-packages/django/template/defaulttags.py", línea 155, en rendir nodelist.append (node.render (contexto)) archivo "/ Library/Python/2.5/site-packages/django/template/defaulttags.py ", línea 382, ​​en el procesamiento raise e NoReverseMatch: Invertir para '' mostrar '' con argumentos '()' y palabra clave arguments '{}' no encontró.

Me pregunto por qué django no pudo representar? ¿Cuál es la forma correcta de definirlo en el tempalte?

Respuesta

0

Por lo que vale, tuve el mismo problema y aunque no recuerdo el motivo por el que ahora, esto lo resolvió para mí. Ejemplo de una aplicación SCRUM en la que estaba trabajando.

url(r'^$', 'scrum.views.index', name='scrum-index'), 
10

El problema es sus comillas simples en 'mostrar'. Cambie esto a "mostrar" y debería funcionar para usted.

Ver here

+1

Nunca ha funcionado para mí, con comillas simples o dobles. Eliminar las comillas funciona, es extraño. 1.5 funciona con comillas dobles. –

+0

Las comillas simples funcionan bien, Django 1.6. ¡Solo asegúrate de poner tus parámetros * fuera * de las comillas! Me llevó una eternidad encontrar ese error, el sistema de plantilla felizmente generó URL vacías sin indicación de error. – Bogatyr

1

Es posible que tenga que ser un poco más específico en la vista que se está tratando de utilizar:

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

Estoy tratando de aprender sobre esta característica, ¿cómo se llama? Busqué la documentación de Django-Project en las plantillas y no hacen mención de '{% url ....}' – CodyBugstein

3

Usted puede que tenga algunos puntos de vista no se han aplicado aún. Parece que el motor de plantillas intenta encontrar todas las vistas de los patrones en urls.py cuando se usa el filtro {% url ...%}.

Suele mostrar un error para su último patrón en urls.py.

Intente comentar cada uno de los patrones de URL que aún no implementó.

También asegúrese de que utiliza la ruta completa:

filtro de plantilla
{% url myapp.views.home %} 

La url ve muy inestable. Intenta mantener future compatibility.

12

IMPORTANTE: esto fue para django 1.4. En django 1.5 es todo lo contrario.

tratar de usar nombres de URL sin comillas

{% url show %} 

no esta

{% url 'show'%} 
+5

Mala idea. Esa forma de usar la etiqueta de plantilla URL está en desuso y no funcionará en Django 1.5. – glarrain

+0

Sí, es verdad;) debería editar :) – iskorum

Cuestiones relacionadas