Django — великолепный фреймворк для быстрой разработки сложных веб-приложений. Среди прочего, django включает админскую часть сайта, автоматически добавляющая инструменты для работы с вашими моделями данных. Админка Django также может быть значительно изменена, если это нужно разработчику, чтобы реализовать что-то нестандартное.
Однако при всех плюсах есть и один минус. Внешний вид админки выглядит старовато на фоне современных плюшек от дизайна, которые со всех сторон сыпятся на современных пользователей. Что делать? Улучшить админку Django!
Содержание
django-admin2
Попробуем в качестве замены стандартной админки Django использовать django-admin2.
Django-admin2 предполагает полную замену и независимость от стандартной админки Django. Для установки и подключения новой админки к нашему проекту выполняем:
Установка django-admin2
Сперва установим приложение django-admin2:
pip install django-admin2
Добавление djadmin2 и rest_framework в settings
INSTALLED_APPS = ( ... 'djadmin2', 'djadmin2.themes.djadmin2theme_default', # for the default theme 'rest_framework', # for the browsable API templates 'floppyforms', # For HTML5 form fields 'crispy_forms', # Required for the default theme's layout ... )
Добавление URLs djadmin2 в URLconf
# urls.py from django.conf.urls import patterns, include import djadmin2 djadmin2.default.autodiscover() urlpatterns = patterns( ... url(r'^admin2/', include(djadmin2.default.urls)), )
Тест django-admin2
Сразу после установки приложения можно залогинится в новую админку, добавив к URL сайта admins2/. Шаблон по-умолчанию для django-admin2 построен на базе Bootstrap и выглядит довольно неплохо.
К сожалению, django-admin2 не отобразила установленных приложений. Сравните со скриншотом родной админки Django:
Django-admin-tools
Django-admin-tools — приложение Django, модифицирующее работу стандартной админки.
Среди прочего, django-admin-tools предлагает функциональный и гибкий в настройке dashboard и настраиваемое меню. Посмотрим.
Установка django-admin-tools
pip install django-admin-tools
First make sure you have the django.core.context_processors.request template context processor in your TEMPLATE_CONTEXT_PROCESSORS.
Then, add admin_tools and its modules to the INSTALLED_APPS like this:
INSTALLED_APPS = (
‘admin_tools’,
‘admin_tools.theming’,
‘admin_tools.menu’,
‘admin_tools.dashboard’,
‘django.contrib.auth’,
‘django.contrib.sites’,
‘django.contrib.admin’
# …other installed applications…
)
Important
it is very important that you put the admin_tools modules before the django.contrib.admin module, because django-admin-tools overrides the default Django admin templates, and this will not work otherwise.
Then, just add django-admin-tools to your urls.py file:
urlpatterns = patterns(»,
url(r’^admin_tools/’, include(‘admin_tools.urls’)),
#…other url patterns…
)
Finally simply run:
python manage.py syncdb
If you have South installed, make sure you run the following commands:
python manage.py migrate admin_tools.dashboard
python manage.py migrate admin_tools.menu
Django-Suit
http://django-suit.readthedocs.org/en/develop/#installation
You can get Django Suit by using pip or easy_install:
pip install django-suit
or
easy_install django-suit
You will need to add the ‘suit’ application to the INSTALLED_APPS setting of your Django project settings.py file.:
INSTALLED_APPS = ( … ‘suit’, ‘django.contrib.admin’, ) Warning ‘suit’ must be added before ‘django.contrib.admin’
You also need to add ‘django.core.context_processors.request’ to TEMPLATE_CONTEXT_PROCESSORS setting in your Django project settings.py file.:
from django.conf.global_settings import TEMPLATE_CONTEXT_PROCESSORS as TCP
TEMPLATE_CONTEXT_PROCESSORS = TCP + ( ‘django.core.context_processors.request’, )
Grappelli
Using pip:
pip install django-grappelli
Go to https://github.com/sehmaschine/django-grappelli if you need to download a package or clone the repo.
Open settings.py and add grappelli to your INSTALLED_APPS (before django.contrib.admin):
INSTALLED_APPS = (
‘grappelli’,
‘django.contrib.admin’,
)
Add URL-patterns:
urlpatterns = patterns(»,
(r’^grappelli/’, include(‘grappelli.urls’)),
)
Make sure AppDirectoriesFinder is first with your STATICFILES_FINDERS:
STATICFILES_FINDERS = (
‘django.contrib.staticfiles.finders.AppDirectoriesFinder’,
‘django.contrib.staticfiles.finders.FileSystemFinder’,
)
Collect the media files:
python manage.py collectstatic
Вывод
Django_suit симпатичнее, чем Grappelli. Если нужно только украшение, то можно поставить его.
Если нужно что-то более «свое», то можно начать с django-admin-tools, либо самостоятельно менять шаблоны и работу админки Django.
А как можно самостоятельно изменить админку наподобие django-admin-tools?
а что с ManyToMany как себя показывают django suit vs grappelli