Astrohas
@Astrohas
Python/Django Developer

Как создать свою кастомную админку на Django?

Итак товагищи, в жизни каждого джангиста наверное наступает то время когда возможностей стандартной админки Django не хватает, да и заказчик просит отдельную, с изюминкой, блек-джеком и шлюхами.
Итак, и в моей жизни настал тот переломный момент - заказчик попросил такую админку, с разграничением доступа, красивым интерфейсом, диаграммами, пентаграммами и прочими инструментами. Так и быть.

Поначалу захотелось все делать в связке Backend -> Rest API -> SPA на React, но уже на второй минуте осознал, что для каждой модели придется создавать формы вручную на стороне фронта, да и не хотелось лишатся таких плющек как стандартные Django формы.

Поэтому забил на всю эту моду с SPA, и решил просто по дедовскому способу пилить все на стороне бека. Взял православный admin_lte2, а дальше пошел в ребут - как же мне все это чудо сделать наиболее универсально и чтобы не приходилось переписывать килотонны кода для добавления новой модели в админку. Использовав навыки гуглёжки нашел библиотеку django-admin2, это аналог стандартной админки, переписанный на CBV. Вроде пользоваться можно. Но насколько правильным путем я иду?

Итак хотелось бы узнать у тостерчан как и с помощью чего они делали кастомную админку... Заранее благодарствую.
  • Вопрос задан
  • 3031 просмотр
Пригласить эксперта
Ответы на вопрос 4
sergey-gornostaev
@sergey-gornostaev Куратор тега Django
Седой и строгий
Я часто вижу заявления про то, что "возможностей стандартной админки Django не хватает". В 9 случаях из 10 это означает, что автор заявления не полностью прочитал документацию и не представляет весь объём возможностей по кастомизации стандартной админки. В оставшемся одном случае автор заявления действительно вышел за пределы, но в этом случае требования оказываются настолько специфичными, что под них перестают подходить даже CRUD CBV, не говоря уж о каких-либо батарейках. Поэтому ответ: Чтобы получить свою админку, пиши свои вьюхи и шаблоны. Принципиальных отличий от разработки каких-либо других вьюх тут нет.
Ответ написан
Комментировать
@FulTupFul
Идешь правильным путем ты путник. Лучше всего дописывать стандартную админку.Django предоставляет большой простор для кастомизации.
Основными союзниками в этом деле для тебя станет:
метод get_queryset() позволяющий перехватывать queryset - https://docs.djangoproject.com/en/2.1/ref/contrib/...
метод changelist_view, change_view и.т.д. позволят тебя пробрасывать любой контент который ты захочешь - https://docs.djangoproject.com/en/2.1/ref/contrib/...
Можно также переписать под себя шаблоны - https://docs.djangoproject.com/en/2.1/ref/contrib/...
Можно перехватывать queryset до или после удаления или создания - https://docs.djangoproject.com/en/2.1/ref/contrib/...
Вообщем, можно все что ты захочешь.
Ответ написан
alsolovyev
@alsolovyev
¯\_(ツ)_/¯ Enjoy life, Eat well & Laugh often
В одном проекте использовал jet.geex-arts.com
Перерисованная админка с дополнительными возможностями. Очень просто писать свои модули для главной страницы: https://jet.readthedocs.io/en/latest/dashboard_cus...
Сейчас у них вышла вторая версия, которая кардинально изменилась внешне в лучшую сторону.

Можно посмотреть в исходниках как было реализовано.
Ответ написан
@MAGistr_MTM
Учусь программировать
В Django Oscar(https://github.com/django-oscar/django-oscar) сделана полностью своя админка. Все действия только в ней. Можно посмотреть как там реализовано.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы