Django Admin приложение или рулон мой собственный?

Я только начинаю использовать Django для личного проекта.

Каковы плюсы и минусы использования встроенного приложения Admin или интеграции моих административных функций в самое приложение (путем проверки request.user.is_staff)?

Это вики сообщества, потому что это можно считать опросом.

7 Solutions collect form web for “Django Admin приложение или рулон мой собственный?”

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

Думаю, вы должны увидеть это так:

Использование администратора django: сэкономьте время, записывая его, теряя время, используя его.
Перемещение собственного администратора: потеряйте время, записывая его, экономя время, используя его.

Я использовал приложение администратора Django по ряду причин. Во-первых, написание приложения для администрирования может быть довольно сложным и потребуется некоторое время, если вы хотите сделать это правильно, а django.contrib.admin – бесплатно и работает из коробки. Во-вторых, он действительно хорошо разработан и очень хорош для работы (даже для нетехнических пользователей). В-третьих, он охватывает множество распространенных случаев, и не представляется разумным тратить время на переписывание, пока вы не уверены, что не можете сделать иначе. В-четвертых, на самом деле это не так сложно настроить. Например, добавление кнопок akismet mark-as-spam и mark-as-ham действительно было куском пирога.

Так легко избирательно переопределить части администратора в той или иной степени.

Ты можешь:

  1. Переопределите шаблоны администратора в приложении по умолчанию или даже по модели.

  2. Переопределить представления администратора путем наследования и подкласса

  3. Поймайте 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 раза больше времени. Я просто не вижу сценарий, в котором вы хотели бы написать свой собственный.

Interesting Posts

Простое приложение командной строки в python – проанализируйте ввод пользователя?

анализ документов excel с помощью python

BeautifulSoup findall с ошибкой атрибута class-unicode

from scrapy.selector import selector error

Вопрос о Django Forms Newbie

Python для .NET: использование одной и той же сборки .NET в нескольких версиях

Преобразование форматов даты python – Необычные форматы даты – Извлечение% Y% M% D

Установка delete-orphan в отношении SQLAlchemy вызывает AssertionError: этот атрибутImpl не настроен для отслеживания родителей

Как быстро вычислить порядок локализации всех пересечений набора множеств

Django Ajax Jquery Call

Как извлечь JAR в файловой системе UNIX с помощью одной команды и указать ее целевой каталог с помощью команды JAR?

Патч – Почему не будет указано имя целевого имени патча?

Django Admin – отключить действие «Добавить» для определенной модели

py2exe: MKL FATAL ERROR: Не удается загрузить файл mkl_intel_thread.dll

Как я могу запустить некоторый код, когда метод сохранения модели Django вызывается в первый раз?

Python - лучший язык программирования в мире.