partialdef Tag

Utility Most Useful

Argument(s): partial_name, inline (optional)

Added in Django 6.0

Documentation

Defines a reusable template fragment that can be rendered multiple times within the same template using the partial tag. This helps avoid repetition and maintain consistent output.

New in Django 6.0.

Basic Usage

Define a partial with a name, then render it later with the partial tag:

Template

{% partialdef user-info %}
  <div id="user-info-{{ user.username }}">
    <h3>{{ user.name }}</h3>
    <p>{{ user.bio }}</p>
  </div>
{% endpartialdef %}

{# Render the partial elsewhere in the template #}
{% partial user-info %}

For clarity, you can include the partial name in the closing tag:

{% partialdef user-info %}
  ...
{% endpartialdef user-info %}

Arguments

  • partial_name (required) – A valid template identifier for the fragment.
  • inline (optional) – When included, the partial is both defined and immediately rendered in place.

Inline Partials

Use the inline argument to define and immediately render a partial:

{% partialdef card inline %}
  <div class="card">
    <h3>{{ title }}</h3>
    <p>{{ content }}</p>
  </div>
{% endpartialdef %}

{# The card is already rendered above, but can be rendered again: #}
{% partial card %}

Direct Access via Template Loading

Partials can be accessed directly when loading or including templates using hash syntax:

{% include "mytemplate.html#user-info" %}

Context

Partials have access to the current template context. They work within loops and with tags, allowing context to be adjusted for each rendering.

Template

{% partialdef button inline %}
  <button class="btn btn-{{ style }}">{{ label }}</button>
{% endpartialdef %}

{% with style="primary" label="Save" %}
  {% partial button %}
{% endwith %}

{% with style="danger" label="Delete" %}
  {% partial button %}
{% endwith %}

Result

<button class="btn btn-primary">Save</button>
<button class="btn btn-danger">Delete</button>

Commentary

Template partials are a welcome addition to Django's template system. They fill a gap between simple variable reuse (with the with tag) and full template includes (with the include tag).

Use partials when you need to repeat a small fragment multiple times within the same template. For fragments that need to be shared across multiple templates, continue using include.


Did we get something wrong? Is there a use case for the partialdef tag that we should add? Please let us know.

Send Feedback

Official Documentation
This page last updated on Dec. 3, 2025, 11:37 p.m. EST