django-formtools
A set of high-level abstractions for Django forms
What it is and what it does
django-formtools is a standalone package that provides form abstractions originally built into Django's core. It specializes in handling multi-step (wizard) forms and form previews—common patterns in web applications where users fill out forms across multiple pages or need to review their input before submission. The package depends only on Django itself and is designed to integrate seamlessly into Django projects by providing view classes and utilities that manage form state across HTTP requests.
The package is actively maintained by the Jazzband collective and supports modern Python versions (3.10 through 3.14) and recent Django releases (5.2 and 6.0). It has no known security vulnerabilities and carries a permissive BSD license, making it suitable for both open-source and commercial use.
Use it for:
- Build multi-page registration or checkout flows where users complete forms across several steps
- Implement form preview pages that let users review their input before final submission
- Handle complex questionnaires or surveys that need to be broken into manageable sections
- Manage form state and validation across multiple HTTP requests in a Django application
Worth the install?
AI-flagged interpretation of the facts on this page — verify before relying
django-formtools provides high-level form abstractions for Django, including multi-step form handling and form preview functionality that was previously part of Django's core.
Yes. django-formtools is a stable, actively maintained package with no security issues, low install friction, and a permissive license. Install it if you need multi-step form handling or form preview functionality in a Django project—these are common patterns it handles well. The recent release and ongoing maintenance make it a reliable choice for modern Django applications.
Install
django-formtools on PyPI
pip
pip install django-formtoolsuv
uv add django-formtoolspoetry
poetry add django-formtoolsInstalling django-formtools
Before you install
Low install friction with a single Django dependency. Active maintenance with a recent release 36 days ago and ongoing commits; the project is hosted on Jazzband and has 885 repository stars.
License in practice
BSD license (permissive) means you can use, modify, and distribute this package freely in commercial and private projects with minimal restrictions.
Quickstart
pip install django-formtools
from django_formtools.views import SessionWizardView
from django.forms import Form
class MyWizard(SessionWizardView):
template_name = 'wizard.html'
form_list = [Form1, Form2, Form3]
Requires Django 5.2 or 6.0 and Python 3.10 or later; must be added to Django's INSTALLED_APPS.
Verify before relying
- Specific feature completeness compared to Django's current form handling capabilities
- Performance characteristics for very large multi-step forms or high-concurrency scenarios
Package facts
| License | BSD (permissive) |
| Python support | supports the current Python release (>=3.10) |
| Install friction | low — pure-Python wheel |
| Runtime dependencies | 1 — Django |
| Maintenance | actively maintained — 36 days since the last release |
| Last repo commit | |
| First released | |
| Downloads | 3,930,157/month — #2,449 on PyPI (30-day window, as of 2026-08-14) |
| Known vulnerabilities | none known (OSV.dev, checked 2026-08-14) |
Evidence: django_formtools-2.7-py3-none-any.whl
Tags
More WWW/HTTP packages
urllib3 is an HTTP client library that provides…
permissive · top 100 on PyPI
requestsRequests is a Python HTTP library that…
permissive · top 100 on PyPI
h11h11 is a pure-Python HTTP/1.1 protocol…
permissive · top 100 on PyPI
httpxHTTPX is a fully featured HTTP client library…
permissive · top 100 on PyPI
httpcoreA minimal low-level HTTP client library that…
permissive · top 100 on PyPI
aiohttpaiohttp is an async HTTP client and server…
permissive · top 100 on PyPI
DjangoDjango is a high-level Python web framework for…
permissive · top 1,000 on PyPI
django-crispy-formsRenders Django forms programmatically with full…
permissive · top 5,000 on PyPI
FormEncodeFormEncode validates and generates HTML forms,…
permissive · top 15,000 on PyPI
django-markdownxDjango MarkdownX provides a Markdown editor…
permissive · top 15,000 on PyPI
django-better-admin-arrayfieldProvides a list-based widget for Django's…
permissive · top 15,000 on PyPI
django-select2Provides custom autocomplete form fields for…
permissive · top 15,000 on PyPI
crispy-bootstrap4Provides Bootstrap 4 HTML templates for…
permissive · top 15,000 on PyPI
PyPDFFormPyPDFForm creates, inspects, styles, and fills…
permissive · top 15,000 on PyPI
django-summernoteEmbeds the Summernote WYSIWYG editor into…
permissive · top 15,000 on PyPI
django-permissionedformsExtends Django's forms framework to…
permissive · top 5,000 on PyPI