One of the most useful parts of django.contrib.admin
is the ability to
configure various views that touch and alter data. django-admin2 is a complete
rewrite of that library using modern Class-Based Views and enjoying a design
focused on extendibility and adaptability. By starting over, we can avoid the
legacy code and make it easier to write extensions and themes.
Full Documentation at: http://django-admin2.rtfd.org/
- Rewrite of the Django Admin backend
- Drop-in themes
- Built-in RESTful API
- Django 1.6+
- Python 2.7+ or Python 3.3+
- django-braces
- django-extra-views
- django-floppyforms
- django-rest-framework
- django-filter
- Sphinx (for documentation)
Use pip to install from PyPI:
pip install django-admin2
Add djadmin2 and rest_framework to your settings file:
INSTALLED_APPS = (
...
'djadmin2',
'rest_framework', # for the browsable API templates
'floppyforms', # For HTML5 form fields
'crispy_forms', # Required for the default theme's layout
...
)
Add the default theme in your settings file:
# In settings.py
INSTALLED_APPS += ('djadmin2.themes.djadmin2theme_default',)
ADMIN2_THEME_DIRECTORY = "djadmin2theme_default/"
Add djadmin2 urls to your URLconf:
# urls.py
from django.conf.urls import patterns, include
import djadmin2
djadmin2.default.autodiscover()
urlpatterns = patterns(
...
url(r'^admin2/', include(djadmin2.default.urls)),
)
# myapp/admin2.py
# Import your custom models
from django.contrib.auth.forms import UserCreationForm, UserChangeForm
from django.contrib.auth.models import User
from .models import Post, Comment
import djadmin2
class UserAdmin2(djadmin2.ModelAdmin2):
# Replicates the traditional admin for django.contrib.auth.models.User
create_form_class = UserCreationForm
update_form_class = UserChangeForm
# Register each model with the admin
djadmin2.default.register(Post)
djadmin2.default.register(Comment)
djadmin2.default.register(User, UserAdmin2)
Themes are now defined explicitly, including the default theme. Therefore, your settings need to include this:
# In settings.py
INSTALLED_APPS += ('djadmin2.themes.djadmin2theme_default',)
ADMIN2_THEME_DIRECTORY = "djadmin2theme_default/"
The default theme is whatever bootstrap is most current. Specifically:
# In settings.py
INSTALLED_APPS += ('djadmin2.themes.djadmin2theme_default',)
ADMIN2_THEME_DIRECTORY = "djadmin2theme_default/"
If you create a new theme, you define it thus:
# In settings.py
# Mythical theme! This does not exit... YET!
INSTALLED_APPS += ('djadmin2theme_foundation',)
ADMIN2_THEME_DIRECTORY = "djadmin2theme_foundation/"
This project follows best practices as espoused in Two Scoops of Django: Best Practices for Django 1.6.
You can hire the lead maintainer to perform dedicated work on this package. Please email [email protected].