A modern, reactive Django admin interface powered by djust
Project description
djust-admin
A modern, reactive Django admin interface powered by djust.
Status: Pre-Alpha - This project is in early development. APIs may change.
Features
- Real-time search - Filter results as you type with debounced queries
- Live sorting - Click columns to sort without page reload
- Bulk actions - Select multiple items and perform actions
- Instant feedback - Form validation and save feedback in real-time
- Modern UI - Clean, responsive design with Tailwind CSS
- Django compatible - Works with existing Django models and permissions
Installation
pip install djust-admin
Quick Start
1. Add to INSTALLED_APPS
INSTALLED_APPS = [
# ...
'djust',
'djust_admin',
# ...
]
2. Create admin configuration
# myapp/admin.py
from djust_admin import DjustModelAdmin, site
from .models import Article, Author
@site.register(Article)
class ArticleAdmin(DjustModelAdmin):
list_display = ['title', 'author', 'published_date', 'status']
list_filter = ['status', 'author']
search_fields = ['title', 'content']
ordering = ['-published_date']
@site.register(Author)
class AuthorAdmin(DjustModelAdmin):
list_display = ['name', 'email', 'article_count']
search_fields = ['name', 'email']
def article_count(self, obj):
return obj.articles.count()
article_count.short_description = "Articles"
3. Add URLs
# urls.py
from django.urls import path, include
from djust_admin import site
urlpatterns = [
# ... your other urls
path('djust-admin/', include(site.urls)),
]
4. Configure ASGI (for WebSocket support)
# asgi.py
from django.core.asgi import get_asgi_application
from channels.routing import ProtocolTypeRouter, URLRouter
from channels.auth import AuthMiddlewareStack
from djust.websocket import LiveViewConsumer
from django.urls import path
application = ProtocolTypeRouter({
"http": get_asgi_application(),
"websocket": AuthMiddlewareStack(
URLRouter([
path('ws/live/', LiveViewConsumer.as_asgi()),
])
),
})
Configuration
DjustModelAdmin Options
class MyModelAdmin(DjustModelAdmin):
# List view
list_display = ['field1', 'field2'] # Fields to show in list
list_filter = ['status', 'created_at'] # Filter sidebar
search_fields = ['title', 'content'] # Searchable fields
list_per_page = 25 # Items per page
ordering = ['-created_at'] # Default ordering
# Detail view
fields = ['field1', 'field2'] # Fields to show in form
readonly_fields = ['created_at'] # Non-editable fields
fieldsets = [ # Group fields
('Basic Info', {'fields': ['title', 'slug']}),
('Content', {'fields': ['body']}),
]
# Actions
actions = ['publish', 'archive'] # Bulk actions
def publish(self, request, queryset):
queryset.update(status='published')
publish.short_description = "Publish selected"
Custom Admin Site
from djust_admin import DjustAdminSite
class MyAdminSite(DjustAdminSite):
site_header = "My Company Admin"
site_title = "Admin Portal"
index_title = "Welcome to the Admin"
admin_site = MyAdminSite(name='myadmin')
Comparison with Django Admin
| Feature | Django Admin | djust-admin |
|---|---|---|
| Page reloads for actions | Yes | No (WebSocket) |
| Search | On submit | Real-time |
| Sorting | Page reload | Instant |
| Form validation | On submit | Real-time |
| Bulk selection | Checkbox + submit | Live state |
| JavaScript required | ~150KB | ~5KB |
Roadmap
v0.1.0 (Current)
- Basic model list view with search/sort/pagination
- Model detail/edit view with form validation
- Delete confirmation
- Bulk actions (delete)
- Filter sidebar
v0.2.0
- Inline related objects
- Foreign key autocomplete
- File upload support
- Custom actions with confirmation
v0.3.0
- Dashboard widgets
- Activity log
- User preferences
- Themes
Contributing
Contributions are welcome! Please see CONTRIBUTING.md.
License
MIT License - see LICENSE for details.
Project details
Release history Release notifications | RSS feed
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 djust_admin-0.3.0.tar.gz.
File metadata
- Download URL: djust_admin-0.3.0.tar.gz
- Upload date:
- Size: 155.6 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
ab1f9823039bb495b703c61bac5a104312f84832d5966f913ed814871f7c59fe
|
|
| MD5 |
d34db85ac44c8d90e8d5cc8ad4ae8f9b
|
|
| BLAKE2b-256 |
395e9d3ae7cfc90ea102e9d32c3ad8003e6f0b12dc7d768fdba9b98a541f8f04
|
Provenance
The following attestation bundles were made for djust_admin-0.3.0.tar.gz:
Publisher:
publish.yml on djust-org/djust-admin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
djust_admin-0.3.0.tar.gz -
Subject digest:
ab1f9823039bb495b703c61bac5a104312f84832d5966f913ed814871f7c59fe - Sigstore transparency entry: 985839481
- Sigstore integration time:
-
Permalink:
djust-org/djust-admin@7a7002fbd6428b942f113aa5a3a70956e3166de0 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/djust-org
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7a7002fbd6428b942f113aa5a3a70956e3166de0 -
Trigger Event:
release
-
Statement type:
File details
Details for the file djust_admin-0.3.0-py3-none-any.whl.
File metadata
- Download URL: djust_admin-0.3.0-py3-none-any.whl
- Upload date:
- Size: 34.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
fd9acdcb6e30b622f5855fbae7309181408be91a8c25d60fd3dd0102a92ea01b
|
|
| MD5 |
8b0eb15b4a3475ab226a9faf85eb541e
|
|
| BLAKE2b-256 |
a8401c282430d52e9a5166cbf7b19a7779ec6de249ad3d2cc10393d25cd0ab21
|
Provenance
The following attestation bundles were made for djust_admin-0.3.0-py3-none-any.whl:
Publisher:
publish.yml on djust-org/djust-admin
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
djust_admin-0.3.0-py3-none-any.whl -
Subject digest:
fd9acdcb6e30b622f5855fbae7309181408be91a8c25d60fd3dd0102a92ea01b - Sigstore transparency entry: 985839540
- Sigstore integration time:
-
Permalink:
djust-org/djust-admin@7a7002fbd6428b942f113aa5a3a70956e3166de0 -
Branch / Tag:
refs/tags/v0.3.0 - Owner: https://github.com/djust-org
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
publish.yml@7a7002fbd6428b942f113aa5a3a70956e3166de0 -
Trigger Event:
release
-
Statement type: