Views¶
TODO list
- Describe customization of model views
- Show how to use ModelAdmin2 inheritance so an entire project works off a custom base view.
Customizing the Dashboard view¶
When you first log into django-admin2, just like django.contrib.admin
you are presented with a display of apps and models. While this is useful for developers, it isn’t friendly for end-users. Fortunately, django-admin2 makes it trivial to switch out the standard dashboard view.
However, because this is the dashboard view, the method of customization and configuration is different than other django-admin2 views.
In your Django project’s root URLconf module (urls.py
) modify the code to include the commented code before the djadmin2_site.autodiscover()
:
from django.conf.urls import include, url
from djadmin2.site import djadmin2_site
from djadmin2.views import IndexView
######### Begin django-admin2 customization code
# Create a new django-admin2 index view
class CustomIndexView(IndexView):
# specify the template
default_template_name = "custom_dashboard_template.html"
# override the default index_view
djadmin2_site.index_view = CustomIndexView
######### end django-admin2 customization code
djadmin2_site.autodiscover()
urlpatterns = [
url(r'^admin2/', include(djadmin2_site.urls)),
# ... Place the rest of the project URLs here
]
In real projects the new IndexView would likely be placed into a views.py
module.
Note
Considering that dashboard is more intuitive of a name, perhaps the IndexView
should be renamed DashboardView
?
Customizing the Login view¶
The login view could also be customized.
In your Django project’s root URLconf module (urls.py
) modify the code to include the commented code before the djadmin2.default.autodiscover()
:
from django.conf.urls import patterns, include, url
from djadmin2.site import djadmin2_site
from djadmin2.views import LoginView
######### Begin django-admin2 customization code
# Create a new django-admin2 index view
class CustomLoginView(LoginView):
# specify the template
default_template_name = "custom_login_template.html"
# override the default index_view
djadmin2_site.login_view = CustomLoginView
######### end django-admin2 customization code
djadmin2_site.autodiscover()
urlpatterns = patterns('',
url(r'^admin2/', include(djadmin2_site.urls)),
# ... Place the rest of the project URLs here
)
In real projects the new LoginView would likely be placed into a views.py
module.