Django Admin приложение или рулон мой собственный?
Я только начинаю использовать Django для личного проекта.
Каковы плюсы и минусы использования встроенного приложения Admin или интеграции моих административных функций в самое приложение (путем проверки request.user.is_staff)?
- Встроенное решение для Django Admin, где Admin содержит ForeignKey для другой модели
- django - установка прав пользователя при автоматическом создании пользователя
- Два аргумента в пользовательской команде django-admin
- Активность регистрации в Django's admin - Django
- как добавить разрешения в Django в модели и протестировать его с помощью оболочки
Это вики сообщества, потому что это можно считать опросом.
- Разрешение символа «-» в именах пользователей в интерфейсе Django Admin
- Переводимые поля Manytomany в admin генерируют много запросов
- Django - Как получить URL-адрес администратора из экземпляра модели
- Создание модели профиля с использованием как InlineAdmin, так и post_save сигнала в Django
- Django - Как заполнять поля формы администратора
7 Solutions collect form web for “Django Admin приложение или рулон мой собственный?”
Это действительно зависит от проекта, который я предполагаю. Хотя вы можете делать все в администраторе, когда ваше приложение становится более сложным с помощью администратора, он становится более сложным. И если вы хотите, чтобы ваше приложение действительно было легко управлять, вы хотите контролировать каждую мелочь, что не совсем возможно с помощью приложения admin.
Думаю, вы должны увидеть это так:
Использование администратора django: сэкономьте время, записывая его, теряя время, используя его.
Перемещение собственного администратора: потеряйте время, записывая его, экономя время, используя его.
Я использовал приложение администратора Django по ряду причин. Во-первых, написание приложения для администрирования может быть довольно сложным и потребуется некоторое время, если вы хотите сделать это правильно, а django.contrib.admin
– бесплатно и работает из коробки. Во-вторых, он действительно хорошо разработан и очень хорош для работы (даже для нетехнических пользователей). В-третьих, он охватывает множество распространенных случаев, и не представляется разумным тратить время на переписывание, пока вы не уверены, что не можете сделать иначе. В-четвертых, на самом деле это не так сложно настроить. Например, добавление кнопок akismet mark-as-spam и mark-as-ham действительно было куском пирога.
Так легко избирательно переопределить части администратора в той или иной степени.
Ты можешь:
-
Переопределите шаблоны администратора в приложении по умолчанию или даже по модели.
-
Переопределить представления администратора путем наследования и подкласса
-
Поймайте URL-адрес администратора, разместив его перед ним в urls.py и предоставив свои собственные интерфейсы, основанные на взгляде администратора
… и многое другое.
Так что начните с администратора, а затем слота в любой настраиваемой функциональности, в которой вы нуждаетесь, где вам это нужно.
Есть куча приложений, которые делают умные вещи с администратором. Например:
- django-reversion берет на себя административный журнал и расширяет его до полной истории.
- Tusk CMS сочетает в себе приложение django-mptt с вложенным сортируемым виджетами JQuery аккуратным способом.
Также найдите django-snippets для связанных с администрированием фрагментов, и эта страница имеет множество информации.
Я с грустью обнаружил, что в то время как приложение admin django экономит много времени, оно становится затруднительным позже, так как ваш заказчик требует больше функций, которые нелегко интегрируются с интерфейсом администратора по умолчанию. Вы можете использовать два типа средств администрирования: администратор django (для приложений, требующих простой ввода данных), и собственный настраиваемый интерфейс администратора для других приложений, для которых требуется более богатый интерфейс.
Подумайте об использовании администратора Django, но с вашими собственными виджетами ручной работы для определенных полей. Вы можете создавать сложные детали формы и сообщать администратору использовать свой код для ввода и отображения любого конкретного поля или всех полей типа.
Jannis сделал некоторые интересные вещи, и его работа показывает вам, насколько это просто: http://jannisleidel.com/2008/11/wysiwym-editor-widget-django-admin-interface/
Проект, над которым я работаю, недавно включил таймер, который использует выпадающие списки для разных частей времени (h, m, s). Другое поле указывает, какие дни недели повторяются … он будет использовать 7 флажков за дни недели, и сохраните это в базе данных как маринованный dateutil.rruleset. Затем вы просто даете подсказки администратора, по которым виджеты используются для разных полей.
Это связано с определением вашего класса данных, вашего собственного виджета, который создает подклассы. Виджет, ваше собственное поле, которое создает подклассы. Поле и модель. Каждый из трех классов хорош, прост и чист и отвечает за переход из базы данных в модель, модель в виджет и обратно через эти два шага. Это действительно красота.
Поля, которые вы создаете, будут одними из наиболее многоразовых, сложных интеллектуальных объектов, которые вы можете накопить … и вам не нужно писать собственный администратор с нуля.
Я бы рекомендовал включить административный сайт практически для каждого типа проекта. Стоимость его настройки довольно низкая, и это дает вам достаточно удобный механизм для проверки и модификации вашего сайта.
Если ваш сайт имеет в основном односторонний поток информации, от веб-мастера до посетителей, то, вероятно, все, что вам нужно, – это сайт администратора.
Если, однако, ваш сайт имеет более богатое взаимодействие между его пользователями, вам нужно будет составить представления django, которые могут включить это взаимодействие, а также ограничить доступ к тому, что пользователи действительно могут сделать.
Я бы пошел с функциональностью администратора Django, написав свой собственный. Вы можете настроить администратора Django, добавив собственные шаблоны для администратора, собственные виджеты и т. Д. Я работаю над проектом с очень настроенным администратором Django. Если бы мы решили написать его вручную, это заняло бы в 4 раза больше времени. Я просто не вижу сценарий, в котором вы хотели бы написать свой собственный.
- Как разрешить пробелы в регулярном выражении имени пользователя Django?
- Проблема с администратором Django, регистрирующим встроенный профиль пользователя admin
- Как удалить кнопку «Добавить» в администраторе Django для конкретной модели?
- Как использовать can_add_related в Django Admin
- DateTimeField не отображается в системе администратора
- Пользовательские шаблоны admin django не работают
- Как получить текущий экземпляр модели из inlineadmin в Django
- Django InlineModelAdmin: Показать частично встроенную модель и ссылку на полную модель
- Встроенное редактирование отношения ManyToMany в Django
- Django admin inline inlines (или, три редактирования модели сразу)
- Как настроить страницу администратора auth.User Admin в Django CRUD?
- Наследие Django admin Наследование возможно?