bhylu.com

Advertisements

Django Template Includes

An include is useful for a small repeated fragment such as a workshop card. Pass the values it needs rather than relying on unrelated context names.

How it works

The only option limits the included template’s context to the supplied values. This makes the partial easier to reuse and test because it does not accidentally depend on a page-level loop variable or request property. An included template is rendered separately; it is not the same as extending a base template and replacing a block. Keep the partial’s role narrow and use semantic HTML for its content.

Run in the supplied local Django project

This lesson uses Django 5.2.18 LTS with Python 3.12. Download the source downloader and run node download-project.mjs http://127.0.0.1:8000 with Node 22 while previewing locally. It creates a new bhylu-django-lab folder and refuses to overwrite an existing one. After deployment, the default base is bhylu.com; until then use your local preview URL.

Inside that new folder, create a virtual environment, install requirements.txt and run the complete lesson file shown below. Every lesson creates a fresh in-memory SQLite database and temporary upload storage. It does not edit the interactive lab’s db.sqlite3 or Bhylu’s database. The visible listing below is the lesson’s core code; its complete downloaded file includes the shared bootstrap.

Django does not run in Bhylu’s current browser playground. No Apache, MySQL or global PHP configuration change is needed. See the setup lesson for the full project and commands.

Example

Run .venv\Scripts\python.exe lessons\includes.py from the downloaded project root. Download the complete lesson file; keep it under lessons/. The project’s shared models, forms, views and fixture are prerequisites, not a hidden online runtime.

lessons/includes.py — core code

from django.template.loader import render_to_string
workshop = Workshop.objects.select_related("venue").get(slug="lamp-care")
html = render_to_string("workshops/card.html", {"workshop":workshop})
print("Lamp care" in html)
print("River Hall" in html)
print("/workshops/lamp-care/" in html)

Expected result

True
True
True

The card receives one record with its related venue loaded. Its link is built by get_absolute_url rather than handwritten routing logic. Testing the partial independently is useful when several pages reuse the same presentation.

Use Django’s versioned official documentation for exact API contracts and the deployment checklist before a separate release.

Advertisements