Я действительно борюсь со всей этой идеей приложения. Я читал много руководств и руководств по стилю, и я знаю, что я должен попытаться создать специализированные приложения, которые делают ровно одну вещь. Все это имеет смысл, если посмотреть на какой-то простой учебный проект, но как только он попадает в сложный проект реальной жизни, я не могу определить, как я должен рисовать линии между различными приложениями.Django: лучшая практика для разделения проекта на приложения
Одна из проблем заключается в том, что я хочу иметь один сайт (или несколько сайтов), где пользователь видит много разных вещей. Материал, который должен быть из разных приложений, при соблюдении правил дизайна приложения. Как бы я понял что-то подобное? Моя первая идея состояла в том, чтобы создать одно приложение под названием ui
, которое просто обрабатывает ВСЕ виды, которые фактически ведут к шаблону, и все остальные приложения предоставляют модели и вспомогательные функции. Но я боюсь, что приложение ui
станет большим.
Чтобы дать вам небольшой пример: Давайте я хочу иметь сайт, где пользователь может выполнить следующие задачи:
- Выберите тему
- установить некоторые опции для выбранного объекта
- загрузки файлы, связанные с его учетной записью
- присвойте некоторые из загруженных файлов теме
- записать некоторые аудиофайлы, которые будут относиться к объекту
Прямо сейчас, я хотел бы создать три приложения:
- предметов (содержит обрабатываемую модель и некоторые родственные модели)
- ресурсов (содержит модель ресурсов, обрабатывает загрузку)
- аудио (ручки все аудио записи и обработки материал)
Но тогда, я должен был бы какой-то main
или ui
приложение для обработки, как эти ар ps взаимодействовать и создавать фактический сайт, где все приложения каким-то образом задействованы.
Итак, есть ли «правильный» способ сделать это? Или есть какие-то шаблоны, которые я могу использовать? Я также благодарен за ссылки на хорошие ресурсы по этой теме, хотя я уже прочитал немало.
благодарит! возможно, я немного переоценил весь шаблон приложения. но это на самом деле намного больше. Один вопрос: как работает «переопределение на уровне проекта»? Или что вы подразумеваете под этим? – basilikum
@ basilikum Система наследования Django будет сначала искать шаблон или файл css на уровне вашего проекта, затем обратиться к уровню приложения и т. Д. (В зависимости от ваших [настроек] (https://docs.djangoproject.com/en/1.5/ref/ contrib/staticfiles/# staticfiles-finders), это очень полезно при повторном использовании частей ваших кросс-проектов кода, где вы не хотите использовать привязки стиля/шаблона проекта. Имейте в виду, что пакеты с пакетом глубины требуют импортных инструкций в файле инициализации и использования аргумента 'app_label' в классе' Meta' модели. –
Еще раз спасибо! Я уже переделал часть своего кода, и для меня это уже намного более чище. – basilikum