Django CRUD Views
Stop hand-writing the same list, detail, create, update and delete views for every model.
Define your model, register a ViewSet, and Django CRUD Views generates the pages, wires up
every URL, and cross-links the views — using your templates and your permissions, right
inside your own app.
This is all you write
# app/views.py
import django_tables2 as tables
from crud_views.lib.viewset import ViewSet
from crud_views.lib.table import Table
from crud_views.lib.views import (
ListViewTableMixin,
ListViewPermissionRequired,
CreateViewPermissionRequired,
UpdateViewPermissionRequired,
DeleteViewPermissionRequired,
)
from crud_views_object_detail.lib import ObjectDetailViewPermissionRequired
from .models import Author
cv_author = ViewSet(model=Author, name="author")
class AuthorTable(Table):
first_name = tables.Column()
last_name = tables.Column()
class AuthorList(ListViewTableMixin, ListViewPermissionRequired):
cv_viewset = cv_author
table_class = AuthorTable
class AuthorDetail(ObjectDetailViewPermissionRequired):
cv_viewset = cv_author
class AuthorCreate(CreateViewPermissionRequired):
cv_viewset = cv_author
fields = ["first_name", "last_name"]
class AuthorUpdate(UpdateViewPermissionRequired):
cv_viewset = cv_author
fields = ["first_name", "last_name"]
class AuthorDelete(DeleteViewPermissionRequired):
cv_viewset = cv_author
ObjectDetailViewPermissionRequired is provided by the crud_views_object_detail app; add it to
INSTALLED_APPS alongside crud_views.
# app/urls.py
urlpatterns = cv_author.urlpatterns
You get list, detail, create, update and delete pages, every URL wired up, the views cross-linked, and access gated by Django's permission system.
Why developers use it
- Skip the CRUD boilerplate — one ViewSet replaces a pile of near-identical class-based views and
urls.pyentries. - Views that know their siblings — automatic cross-linking that respects Django's permission system; no hand-written
reverse()wiring. - Your app, your control — your templates, URLs and permissions; built on Django's generic class-based views, not locked inside
/admin. - Batteries included — sortable, filterable, paginated tables (django-tables2, django-filter), crispy forms (django-crispy-forms), breadcrumbs, formsets, and nested parent/child URLs.
- Grows with your app — optional extensions for workflows (django-fsm-2), polymorphic models (django-polymorphic), per-object permissions (django-guardian), ordering (django-ordered-model) and non-ORM resources.
- Pluggable themes —
bootstrap5ships as the default; bring your own theme. - Fails early — Django system checks validate your configuration at startup.
Install
pip install django-crud-views
Optional extras: django-crud-views[guardian] (per-object permissions), django-crud-views[ordered] (up/down ordering), django-crud-views[all] (everything).
Run the example project
The repository ships a runnable example project — the tutorial's library app plus one app per feature. All you need is Python 3.12+:
git clone https://github.com/jacob-consulting/django-crud-views.git
cd django-crud-views
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -e ".[all,examples]"
cd examples/bootstrap5
python manage.py migrate
python manage.py seed
python manage.py runserver
Browse http://127.0.0.1:8000/ and log in with alice / alice.
These instructions are CI-tested on Linux, macOS and Windows.
If you use uv and task, the shortcut
is task dev && task run from the repository root.
What it is not
- a replacement for Django's admin interface
- a complete page building system with navigations and lots of widgets
Documentation
Full tutorial and reference: https://django-crud-views.readthedocs.io
Current version
Current version: 0.20.0
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file django_crud_views-0.20.0.tar.gz.
File metadata
- Download URL: django_crud_views-0.20.0.tar.gz
- Upload date:
- Size: 2.2 MB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5a7220b1c2f622493923c32379557cb758f51dc42d69b127a13ce66262e10064
|
|
| MD5 |
d7c6923ee26e127ebdd6081ac8151789
|
|
| BLAKE2b-256 |
e7f005c0f353a67702f3636bc55b78d0ead125d04c84941a853f914fe8199bda
|
Provenance
The following attestation bundles were made for django_crud_views-0.20.0.tar.gz:
Publisher:
publish.yml on jacob-consulting/django-crud-views
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_crud_views-0.20.0.tar.gz -
Subject digest:
5a7220b1c2f622493923c32379557cb758f51dc42d69b127a13ce66262e10064 - Sigstore transparency entry: 2336528408
- Sigstore integration time:
-
Permalink:
jacob-consulting/django-crud-views@43d6de7664d06f2fe77ef78eac0e9c052ec7e107 -
Branch / Tag:
refs/tags/v0.20.0 - Owner: https://github.com/jacob-consulting
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@43d6de7664d06f2fe77ef78eac0e9c052ec7e107 -
Trigger Event:
push
-
Statement type:
File details
Details for the file django_crud_views-0.20.0-py3-none-any.whl.
File metadata
- Download URL: django_crud_views-0.20.0-py3-none-any.whl
- Upload date:
- Size: 184.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via:
twine/7.0.0 CPython/3.13.14
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
aaadd2c161d78f17036ba18a9d8ae39ef3baeaad30d35e159e675b6c0ad56f97
|
|
| MD5 |
48e91552789f8ed986ae5df23d70c965
|
|
| BLAKE2b-256 |
d9a3b04801ce9dacf4367d31710556579ba69311e07025adc274a9fda2cca6a2
|
Provenance
The following attestation bundles were made for django_crud_views-0.20.0-py3-none-any.whl:
Publisher:
publish.yml on jacob-consulting/django-crud-views
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
django_crud_views-0.20.0-py3-none-any.whl -
Subject digest:
aaadd2c161d78f17036ba18a9d8ae39ef3baeaad30d35e159e675b6c0ad56f97 - Sigstore transparency entry: 2336528419
- Sigstore integration time:
-
Permalink:
jacob-consulting/django-crud-views@43d6de7664d06f2fe77ef78eac0e9c052ec7e107 -
Branch / Tag:
refs/tags/v0.20.0 - Owner: https://github.com/jacob-consulting
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@43d6de7664d06f2fe77ef78eac0e9c052ec7e107 -
Trigger Event:
push
-
Statement type: