url template tag in django template

user192048 picture user192048 · Nov 22, 2009 · Viewed 28.4k times · Source

I was trying to use the url template tag in django, but no lucky,

I defined my urls.py like this

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

I defined the url pattern in my view like this

{% url 'show'%}

then I got this error message

Caught an exception while rendering: Reverse for ''show'' with arguments '()' and keyword arguments '{}' not found.

Original Traceback (most recent call last): File "/Library/Python/2.5/site-packages/django/template/debug.py", line 71, in render_node result = node.render(context) File "/Library/Python/2.5/site-packages/django/template/defaulttags.py", line 155, in render nodelist.append(node.render(context)) File "/Library/Python/2.5/site-packages/django/template/defaulttags.py", line 382, in render raise e NoReverseMatch: Reverse for ''show'' with arguments '()' and keyword arguments '{}' not found.

I am wondering why django failed to render? what is the right way to define it in the tempalte?

Answer

iskorum picture iskorum · Nov 16, 2012

IMPORTANT: this was for django 1.4. At django 1.5 it is just the opposite.

try using url names without quotes

{% url show %}

not this

{% url 'show'%}