Here is a complete, beginner-friendly guide on Django Templates along with examples, best practices, and SEO metadata:
🖼️ Django Templates – Design Beautiful Pages with the Template System (2025)
🧲 Introduction – What Are Django Templates?
Django Templates allow you to create dynamic HTML pages that are rendered and returned by views. They provide a clean separation of logic and presentation using a lightweight templating language—making your code maintainable and designer-friendly.
🎯 In this guide, you’ll learn:
- How Django Templates work
- How to create and render a template
- Template syntax: variables, filters, tags
- Best practices and usage tips
🧰 How Templates Fit into Django (MVT)
- Model: Manages data
- View: Fetches data & renders it with a template
- Template: Displays HTML to the user
📊 Django templates receive context data from views and display it using placeholders like {{ variable }}
.
🛠️ Step 1: Create a Template Folder
Inside your app (e.g., blog
), create:
blog/
├── templates/
│ └── blog/
│ └── home.html
✅ Django convention recommends using templates/app_name/template.html
to avoid naming conflicts.
💡 Step 2: Write a Basic Template
blog/templates/blog/home.html
<!DOCTYPE html>
<html>
<head>
<title>{{ title }}</title>
</head>
<body>
<h1>Welcome to {{ site_name }}</h1>
<p>This is rendered using Django Templates!</p>
</body>
</html>
🌐 Step 3: Render Template from View
blog/views.py
from django.shortcuts import render
def home(request):
context = {
'title': 'Blog Home',
'site_name': 'My Awesome Blog'
}
return render(request, 'blog/home.html', context)
🧭 Step 4: Update URL
blog/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.home, name='home'),
]
✅ Now visit: http://localhost:8000/blog/ ➝ You’ll see your rendered HTML.
🧠 Django Template Syntax Overview
Syntax | Description |
---|---|
{{ variable }} | Displays a context variable |
{% tag %} | Controls logic (if, for, etc.) |
{# comment #} | Adds a comment in template |
🔁 Control Structures in Templates
➤ If Condition
{% if user %}
<p>Hello, {{ user }}!</p>
{% else %}
<p>Hello, guest!</p>
{% endif %}
➤ For Loop
<ul>
{% for post in posts %}
<li>{{ post.title }}</li>
{% endfor %}
</ul>
🧹 Common Filters
Filter | Usage |
---|---|
`{{ name | lower }}` |
`{{ num | add:”5″ }}` |
`{{ date | date:”Y-m-d” }}` |
🧩 Template Inheritance (DRY Approach)
base.html
<html>
<head><title>{% block title %}My Site{% endblock %}</title></head>
<body>
{% block content %}{% endblock %}
</body>
</html>
home.html
{% extends 'base.html' %}
{% block title %}Home{% endblock %}
{% block content %}
<h1>Home Page</h1>
{% endblock %}
✅ Best Practices for Templates
- ✅ Use inheritance (
extends
) to avoid duplication - ✅ Keep logic out of templates—use context from views
- ✅ Use
{% include %}
to reuse chunks (e.g., navbars, footers) - ✅ Avoid hardcoding URLs—use
{% url 'route-name' %}
📌 Summary – Recap & Next Steps
🔍 Key Takeaways:
- Django templates render HTML using dynamic data from views
- Template syntax includes variables (
{{ }}
) and tags ({% %}
) - Use
render()
in views to return templates with context - Use
extends
,include
, and filters to keep templates clean
⚙️ Real-World Relevance:
Django Templates are ideal for building SEO-friendly pages, blogs, dashboards, and full-stack applications with dynamic content.
❓ Frequently Asked Questions (FAQ)
❓ Can I use HTML in Django Templates?
✅ Yes. Django Templates are HTML files with embedded template syntax.
❓ How do I pass variables to templates?
✅ Use a context
dictionary in your view:
return render(request, 'file.html', {'key': 'value'})
❓ Can I use external CSS/JS in templates?
✅ Yes. Load static files like this:
{% load static %}
<link rel="stylesheet" href="{% static 'css/style.css' %}">
❓ How do I reuse a header or footer?
✅ Use {% include 'partials/header.html' %}
❓ What happens if a variable is not found?
✅ It renders as an empty string unless you use default filters:
{{ name|default:"Guest" }}
Share Now :