how to use the href attribute in django templates

avorum picture avorum · Jun 19, 2013 · Viewed 63.1k times · Source

When I try to use a link in my Django template from /appname/index/ to get to /appname/detail/### I am instead getting to /appname/index/detail/### which is not what I'm trying to get so my app can't find it in the urlconf of course.

First the urls.py line for the detail page

url(r'detail/(?P<jobID>\d+)/$', 'appname.views.detail')

Additionally, the root urlconf

urlpatterns = patterns('', 
    url(r'^appname/', include('appname.urls')),
    url(r'^admin/', include(admin.site.urls)),
)

Next the template code trying to get there

{% for job in jobList %}
    <a href="detail/{{ job.id }}/">{{ job.name }}</a>

I'm not sure what else might be applicable information, just ask if you would like to see something else. I also tried :

<a href="{% url 'appname.views.detail' %}/{{ job.id }}">{{ job.name }}</a>

But that didn't work either. Thank you in advance for any help.

Answer

Aamir Adnan picture Aamir Adnan · Jun 19, 2013

Add / at start in href:

<a href="/appname/detail/{{ job.id }}/">{{ job.name }}</a>

And for the url tag to work you need to do it like this:

<a href="{% url 'appname.views.detail' jobID=job.id %}">{{ job.name }}</a>