This is our eight article in Django, in this article we are going to learn How to Use URL Template Tag in Django. django url
tag Returns an absolute path reference (a URL without the domain name) matching a given view and optional parameters. This is a way to output links without violating the DRY principle by having to hard-code URLs in your templates.
Flask Web Development Tutorials
1: Flask CRUD Application with SQLAlchemy
2: Flask Creating News Web Application
3: Flask Creating REST API with Marshmallow
OK first of all you need to create a project in Django, we have already covered the creation
of the Django project in our previous article Django Introduction & Installation.
but you can use this command for creating of Django Project.
1 |
django-admin startproject MyProject |
After creation of the Django Project, you need to migrate your Django Project.
1 2 |
cd MyProject python manage.py migrate |
Now we need to create an App, you can read the complete article about Django Apps in this link Django Apps & URL Routing . i have named my App as news, but you can name it what ever you want.
1 |
python manage.py startapp news |
Also you need to add your newly created app in the Django settings.py INSTALLED_APPS.
make sure that always do this process after creating a new App.
1 2 3 4 5 6 7 8 9 10 |
INSTALLED_APPS = [ 'django.contrib.admin', 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.messages', 'django.contrib.staticfiles', 'contact', 'news', ] |
OK before this we have talked about how you can use templates in django, you can check this article Django Templates Introduction. but you need to just create a templates folder in your project and you need to add some html files. basically we are going to create three html files. and also don’t forget to add your templates folder in your settings.py DIRS Section. also we have talked about template inheritance in django, Django Template Inheritance.
This is our navbar.html, and we have already included this file in to our base.html, you can check this article for using Include Template Tag in Django Django Include Template Tag. also you can see that we have linked our pages using URL Template Tag. make sure that your have already given the name for every of your page urls in urls.py file, as we have already given, and we have used that names in here like home, contact and about. these names comes from our urls.py name.
1 2 3 4 5 6 7 8 9 10 |
<nav> <ul> <li><a href="{% url 'home' %}" >Home</a></li> <li><a href="{% url 'contact' %}" >Contact</a></li> <li><a href="{% url 'about' %}" >About</a></li> </ul> </nav> |
OK now this is our base.html. and we have included an external html file at name of navbar.html, that we have already created.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF-8"> <title>{% block title %}{% endblock %}</title> </head> {% include 'navbar.html' %} <body> {% block body %} {% endblock %} </body> </html> |
And these are our three html files for the pages that we are going to use.
templates/home.html
1 2 3 4 5 6 7 8 9 10 11 |
{% extends 'base.html' %} {% block title %} Home {% endblock %} {% block body %} <h1>Codeloop.org, This is our Home Page</h1> <p>Django Tutorial Number 8 , Using URL Template Tag</p> {% endblock %} |
templates/about.html
1 2 3 4 5 6 7 8 9 10 11 |
{% extends 'base.html' %} {% block title %} About {% endblock %} {% block body %} <h1>Codeloop.org, this is our about page</h1> <p>Django Tutorial Number 8 , Using URL Template Tag</p> {% endblock %} |
templates/contact.html
1 2 3 4 5 6 7 8 9 10 11 |
{% extends 'base.html' %} {% block title %} Contact {% endblock %} {% block body %} <h1>Codeloop.org, this is our contact page</h1> <p>Django Tutorial Number 8 , Using URL Template Tag</p> {% endblock %} |
So now open your views.py and we need to add our view functions.
1 2 3 4 5 6 7 8 9 10 11 |
from django.shortcuts import render def home(request): return render(request, "home.html") def about(request): return render(request, "about.html") def contact(request): return render(request, "contact.html") |
Also you need to create your urls, you can read this article for url routing Django Apps & URL Routing . but just create a new python file in your news app at name of urls.py and add these codes. and you can see that we have given name for every url, because we have used these names in the navbar.html for connecting the views.
1 2 3 4 5 6 7 8 9 10 |
from django.urls import path from .views import home, about,contact urlpatterns = [ path('', home, name = 'home'), path('about/', about, name = 'about'), path('contact/', contact, name = 'contact'), ] |
And also you need to include your app urls.py in your project urls.py file.
1 2 3 4 5 6 7 8 |
from django.contrib import admin from django.urls import path,include urlpatterns = [ path('admin/', admin.site.urls), path('', include('news.urls')), ] |
So now you can run your project and see the urls, and there is our simple navbar in every view . if you click on the pages of navbar, you can go directly to that page.
1 |
python manage.py runserver |
http://localhost:8000/
http://localhost:8000/about/
http://localhost:8000/contact/
Subscribe and Get Free Video Courses & Articles in your Email