Skip to main content

Bootstrap forms for Django

Bootstrap integration for django using widget templates.

Motivation

This library is meant to be a drop-in replacement for django-bootstrap5. See below for a list of differences. I really like that library, but it is hard to customize some things because everything is done in python functions. By using widget templates, I hope this library is more flexible.

Installation

Install with pip:

pip install 'django-bs==4.*'  # for bootstrap 4
pip install 'django-bs==5.*'  # for bootstrap 5

After that you have to add it to INSTALLED_APPS. You also need to make sure that the correct FORM_RENDERER is selected and django.forms is in INSTALLED_APPS (after django_bs). This is required so that widget templates can be overwritten:

INSTALLED_APPS = [
    …
    'django_bs',
    …
    'django.forms',
    …
]

FORM_RENDERER = 'django.forms.renderers.TemplatesSetting'

Usage

The following template tags are included in the bootstrap library:

  • bootstrap_field {boundfield} - Render a single field.
  • bootstrap_form {form} - Render errors and all fields for a form. The <form> element itself is not included.
  • bootstrap_messages - Render messages from django.contrib.messages.
  • bootstrap_pagination {page} - Render pagination. You should wrap it in a <nav> element with a meaningful aria-label yourself.

Please refer to the source code for additional parameters.

Differences to django-bootstrap5

  • Uses widget templates instead of custom renderers. IMHO this makes the code much easier to read and customize. A big downside is that I had to monkey-patch BoundField.as_widget() to include some information that would otherwise not be available in the widget templates.
  • Also overwrites the default form template in Django 4.0 and later so that {{ form }} does the right thing automatically.
  • Concentrates on form fields and does therefore not include some other features.
  • Uses .form-text.text-danger instead of .invalid-feedback as it does not depend on DOM location. (see also twbs/bootstrap#29439)
  • Uses Django's required_css_class which is defined on the Form class and added to the <label>.
  • Does not use .is-valid because I find it confusing with server-side rendering.
  • Does not include dismiss-buttons for alerts to avoid depending on JavaScript.
  • Non-field errors are styled as alerts.
  • Improved accessibility.
  • You will have to load bootstrap yourself.
  • No configuration.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

django_bs-5.4.1.tar.gz (8.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

django_bs-5.4.1-py3-none-any.whl (11.6 kB view details)

Uploaded Python 3

File details

Details for the file django_bs-5.4.1.tar.gz.

File metadata

  • Download URL: django_bs-5.4.1.tar.gz
  • Upload date:
  • Size: 8.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for django_bs-5.4.1.tar.gz
Algorithm Hash digest
SHA256 82d87fdd71180d28713f5495c2c38eabcd5d25b042ca9bc5b0c76a790f2919df
MD5 e7564d56688217b22e3e5dfbf933f1b8
BLAKE2b-256 f37e3cbfabd336b200cddf162eae2674ad6ff4aae2cf3f77382b8cbcfa08c860

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_bs-5.4.1.tar.gz:

Publisher: main.yml on xi/django-bs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_bs-5.4.1-py3-none-any.whl.

File metadata

  • Download URL: django_bs-5.4.1-py3-none-any.whl
  • Upload date:
  • Size: 11.6 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.7

File hashes

Hashes for django_bs-5.4.1-py3-none-any.whl
Algorithm Hash digest
SHA256 bbe88aefbc1113d65f3924493c90e9d6e809f377184e7a56fc9feb1459178ef9
MD5 aa06a2eda8c70267159fe9d02158c068
BLAKE2b-256 e7e9dc1b756b25f6ff123812f76a02a5796601d605faa9746aca255878662ba6

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_bs-5.4.1-py3-none-any.whl:

Publisher: main.yml on xi/django-bs

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

Release history Release notifications | RSS feed

This release

5.4.1 This release

2 files

5.4.0

2 files

5.3.0

2 files

5.2.1

2 files

5.2.0

2 files

5.1.0

1 file

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page