{% extends "adminlte/page.html" %} {% block page_title %}Native form{% endblock %} {% block breadcrumb %} {% endblock %} {% block content %}
A plain Django form — no widget attrs, no crispy

This page renders {{ form }} — nothing else. The Bootstrap 5 markup (labels, selects, checkbox, validation states, help text) comes entirely from FORM_RENDERER = "django_adminlte4.forms.AdminLTEFormRenderer" in settings. Submit it empty to see the is-invalid / invalid-feedback states.

{% csrf_token %} {{ form }}
How it works

The renderer swaps Django's form/field templates for AdminLTE-themed ones, project-wide:

# settings.py
FORM_RENDERER = "django_adminlte4.forms.AdminLTEFormRenderer"

Every {{ form }} in the project — function-based views, generic CBVs, UserCreationForm — renders themed automatically. Prefer fine-grained layout control? The Contacts CRUD shows the crispy-forms integration instead; both ship with the package.

{% endblock %}