2009-02-09 3 views
31

Кто-нибудь может порекомендовать хорошее руководство/учебник/статью с советами/рекомендациями по организации и разделению большого проекта Django?Руководство по организации крупных проектов Django

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

ответ

38

Каждое «приложение» должно быть небольшим - единый объект многократного использования плюс несколько связанных таблиц. У нас есть около 5 плюс/минус 2 таблицы для каждой модели приложения. Большинство наших полдюжины приложений меньше 5 таблиц. В модели есть нулевые таблицы.

Каждое приложение должно быть спроектировано так, чтобы быть одной многоразовой концепцией. В нашем случае каждое приложение является частью общего сайта; приложения могут быть удалены и заменены отдельно.

Действительно, это наша стратегия. По мере расширения и развития наших требований мы можем удалять и заменять приложения независимо друг от друга.

Это нормально, что приложения зависят друг от друга. Однако зависимость должна ограничиваться очевидными вещами, такими как «модели» и «формы». Кроме того, приложения могут зависеть от имен в URL друг друга. Следовательно, ваш именованный URL должен иметь форму типа «приложение-вид», поэтому функция reverse или тег {% url %} могут найти их правильно.

Каждая заявка должна содержать это собственные команды пакетной обработки (как правило, с помощью формального командования, которые можно найти в django-admin сценария.

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

10

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

http://code.djangoproject.com/wiki/DjangoResources#Open-SourceDjangoprojects

Как делает Google (хотя большинство из них являются небольшие надстройки в теги шаблонов и Middleware:

http://code.google.com/hosting/search?q=label:django

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

В конце концов, o единственный способ научиться тому, что работает и не работает, - попробовать себя. Все советы и подсказки в мире не помогут, если вы не попробуете сами, но они могут помочь вам начать работу в правильном направлении.

+0

Согласен ... То, что я узнал от работы над pinax и satchmo, неоценимо – Jiaaro

 Смежные вопросы

  • Нет связанных вопросов^_^