Можно ли создать сайт для конечного пользователя, используя только администратора Django? - PullRequest
3 голосов
/ 06 января 2010

Я очень новичок в Django, никогда не разрабатывая его.

Я пытаюсь разработать сайт, функциональность которого доступна только аутентифицированным пользователям (типичная корпоративная вещь: для этого обсуждения, скажем, это частная платформа для блогов).

Функциональность, которую я ищу:

  • Пользователи могут создавать новый блог.
  • каждый пользователь может принадлежать к нескольким группам: пользователь может только просматривать / комментировать посты, созданные участником групп, к которым он принадлежит.
  • Каждый пользователь может изменять / удалять только те сообщения, которые он создает.

На мой взгляд, это, по сути, приложение CRUD с контролем доступа, и в приложении администратора, похоже, встроена большая часть этой функциональности. Реально ли разработать это полное приложение, используя только приложение администратора (не в качестве прототипа, а как решение с качеством выпуска), или я должен смотреть дальше (Общие представления? ModelForms?)

Я пытаюсь оценить, сколько времени это займет (обучение + реализация), чтобы ваши отзывы могли дать мне хорошую идею, в дополнение к обучению меня путям этого нового мира Джанго:)

Редактировать: в частности, одна из моих забот - это разрешения для каждого объекта / строки. Вики django говорят, что система разрешений не поддерживает это, так что я могу по-прежнему использовать приложение администратора?

Ответы [ 3 ]

2 голосов
/ 06 января 2010

Пересмотренная . До тех пор, пока вам не потребуется разрешение для каждого объекта, ответ - да.

Как только вы захотите получить разрешение на блог, где блог - это всего лишь строка, вам нужно будет немного кодировать.

Вы можете полностью использовать элементы интерфейса администратора. У вас есть все источники, которые вы можете прочитать.

Многое из того, что вы хотите, делается с помощью "оберток" вокруг функций администратора.

  1. Вы пишете функцию просмотра "оболочки", которая проверяет права доступа к объекту.

  2. Ваша функция просмотра оболочки вызывает функцию просмотра администратора.

После этого вы захотите исправить таблицы стилей на страницах администратора так, чтобы они выглядели так, как вам нравится.

0 голосов
/ 06 января 2010

С точки зрения смысла, вы действительно не должны основывать потенциально крупномасштабный проект на Django-Admin. Это глупо, и так много людей очаровано Django-Admin, что в их книгах буквально есть глава о том, когда и когда не использовать это для зла.

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

Этот сценарий напоминает мне старый мультфильм Гарфилда, где парень покупает кошке невероятно дорогую и потрясающе выглядящую кровать, а кошка предпочитает спать в коробке, в которую она вошла.

0 голосов
/ 06 января 2010

Что касается разрешений на уровне строк в администраторе, в SVN-версии Django вы можете переопределить методы has_add_permission, has_change_permission и has_delete_permission объекта ModelAdmin, чтобы самостоятельно реализовать собственную логику разрешений в способ, который будет применяться ко всему администратору. Я уверен, что эта функция появится в версии 1.2 в этом году. Похоже, этого пока нет в документации, но если вы можете найти методы по умолчанию в файле django/contrib/admin/options.py источника Django, точные инструкции находятся в строках документации.

Я бы не советовал делать все приложение в админке. Это будет хорошо работать для частей приложения, где люди пишут свои посты и создают свои блоги, но администратор не будет подходить для простого отображения данных, если вы не напишите много собственного кода. Написание представлений, которые могут отображать объекты и отправлять комментарии в Django, не очень сложно - большая часть работы находится в шаблонах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...