Reputation: 116
I am making a personal site. I have a blog page(site.com/blog), where I have a list of my blog posts. If I want to check a blog post simple enough I can click it and the code:
<a href="/blog/{{ obj.id }}"><h1>{{ obj.topic_title }}</h1></a>
will get me there. Also if I want to go to my contacts page (site.com/contacts). Easy enough I click nav contacs button and I go there
<a href="/contacts">Contacts</a>
but if I enter a blog post (site.com/blog/1), I am using the same template and if I want to go to my contacts page I have to yet again click the
<a href="/contacts">Contacts</a>
link, but that will port me to a 404 page site.com/blog/contacts . How do I deal with this problem without harcoding every single page
Upvotes: 0
Views: 45
Reputation: 8254
Use the built-in Django url
template tag, which takes the view name and returns an absolute path to it.
Returns an absolute path reference (a URL without the domain name) matching a given view and optional parameters.
You can give it a view name and any of its view parameters as well. This is much better than how you link to the blog page:
{% url 'blog-view-name' obj.id %}
This ensures that if you ever change the structure of your views, it will still not break your links.
Upvotes: 2