
Security News
Deno 2.4 Brings Back deno bundle, Improves Dependency Management and Observability
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.
|build| |codecov| |docs-status|
Django-extra-views is a Django package which introduces additional class-based views in order to simplify common design patterns such as those found in the Django admin interface.
Supported Python and Django versions: Python 3.6+, Django 2.2-5.1,
see tox.ini <https://github.com/AndrewIngram/django-extra-views/blob/master/tox.ini>
_ for an up-to-date list.
Full documentation is available at read the docs
_.
.. _read the docs: https://django-extra-views.readthedocs.io/
.. |build| image:: https://github.com/AndrewIngram/django-extra-views/workflows/Tests/badge.svg :target: https://github.com/AndrewIngram/django-extra-views/ :alt: Build Status
.. |codecov| image:: https://codecov.io/github/AndrewIngram/django-extra-views/coverage.svg?branch=master :target: https://codecov.io/github/AndrewIngram/django-extra-views?branch=master :alt: Coverage Status
.. |docs-status| image:: https://readthedocs.org/projects/django-extra-views/badge/?version=latest :target: https://django-extra-views.readthedocs.io/ :alt: Documentation Status
.. installation-start
Install the stable release from pypi (using pip):
.. code-block:: sh
pip install django-extra-views
Or install the current master branch from github:
.. code-block:: sh
pip install -e git://github.com/AndrewIngram/django-extra-views.git#egg=django-extra-views
Then add 'extra_views'
to your INSTALLED_APPS
:
.. code-block:: python
INSTALLED_APPS = [
...
'extra_views',
...
]
.. installation-end
.. features-start
FormSet
and ModelFormSet
views - The formset equivalents of
FormView
and ModelFormView
.InlineFormSetView
- Lets you edit a formset related to a model (using
Django's inlineformset_factory
).CreateWithInlinesView
and UpdateWithInlinesView
- Lets you edit a
model and multiple inline formsets all in one view.GenericInlineFormSetView
, the equivalent of InlineFormSetView
but for
GenericForeignKeys
.CreateWithInlinesView
and
UpdateWithInlinesView
.NamedFormsetsMixin
.SortableListMixin
- Generic mixin for sorting functionality in your views.SearchableListMixin
- Generic mixin for search functionality in your views.SuccessMessageMixin
and FormSetSuccessMessageMixin
- Generic mixins
to display success messages after form submission... features-end
Add support for pagination in ModelFormSetView and its derivatives, the goal being to be able to mimic the change_list view in Django's admin. Currently this is proving difficult because of how Django's MultipleObjectMixin handles pagination.
.. quick-examples-start
FormSetView ^^^^^^^^^^^^^^^^^^^^^^^
Define a :code:FormSetView
, a view which creates a single formset from
:code:django.forms.formset_factory
and adds it to the context.
.. code-block:: python
from extra_views import FormSetView
from my_forms import AddressForm
class AddressFormSet(FormSetView):
form_class = AddressForm
template_name = 'address_formset.html'
Then within address_formset.html
, render the formset like this:
.. code-block:: html
<form method="post">
...
{{ formset }}
...
<input type="submit" value="Submit" />
</form>
ModelFormSetView ^^^^^^^^^^^^^^^^^^^^
Define a :code:ModelFormSetView
, a view which works as :code:FormSetView
but instead renders a model formset using
:code:django.forms.modelformset_factory
.
.. code-block:: python
from extra_views import ModelFormSetView
class ItemFormSetView(ModelFormSetView):
model = Item
fields = ['name', 'sku']
template_name = 'item_formset.html'
CreateWithInlinesView or UpdateWithInlinesView ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
Define :code:CreateWithInlinesView
and :code:UpdateWithInlinesView
,
views which render a form to create/update a model instance and its related
inline formsets. Each of the :code:InlineFormSetFactory
classes use similar
class definitions as the :code:ModelFormSetView
.
.. code-block:: python
from extra_views import CreateWithInlinesView, UpdateWithInlinesView, InlineFormSetFactory
class ItemInline(InlineFormSetFactory):
model = Item
fields = ['sku', 'price', 'name']
class ContactInline(InlineFormSetFactory):
model = Contact
fields = ['name', 'email']
class CreateOrderView(CreateWithInlinesView):
model = Order
inlines = [ItemInline, ContactInline]
fields = ['customer', 'name']
template_name = 'order_and_items.html'
class UpdateOrderView(UpdateWithInlinesView):
model = Order
inlines = [ItemInline, ContactInline]
fields = ['customer', 'name']
template_name = 'order_and_items.html'
Then within order_and_items.html
, render the formset like this:
.. code-block:: html
<form method="post">
...
{{ form }}
{% for formset in inlines %}
{{ formset }}
{% endfor %}
...
<input type="submit" value="Submit" />
</form>
.. quick-examples-end
Pull requests are welcome. To run all tests locally, setup a virtual environment and run
.. code-block:: sh
tox
Before committing, use pre-commit
to check all formatting and linting
.. code-block:: sh
pip install pre-commit
pre-commmit install
This will automatically run black
, isort
and flake8
before the commit is accepted.
FAQs
Extra class-based views for Django
We found that django-extra-views demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Security News
Deno 2.4 brings back bundling, improves dependency updates and telemetry, and makes the runtime more practical for real-world JavaScript projects.
Security News
CVEForecast.org uses machine learning to project a record-breaking surge in vulnerability disclosures in 2025.
Security News
Browserslist-rs now uses static data to reduce binary size by over 1MB, improving memory use and performance for Rust-based frontend tools.