Ответ 1
Каждое "приложение" должно быть маленьким - единственным объектом многократного использования плюс несколько связанных таблиц. У нас есть около 5 плюс/минус 2 таблицы для каждой модели приложения. Большинство наших полдюжины приложений меньше 5 таблиц. В модели есть нулевые таблицы.
Каждое приложение должно быть спроектировано как одна концепция многократного использования. В нашем случае каждое приложение является частью общего сайта; приложения могут быть удалены и заменены отдельно.
Действительно, наша стратегия. Поскольку наши требования расширяются и созревают, мы можем удалять и заменять приложения независимо друг от друга.
Хорошо, что приложения зависят друг от друга. Однако зависимость должна ограничиваться очевидными вещами, такими как "модели" и "формы". Кроме того, приложения могут зависеть от имен в каждом другом URL. Следовательно, ваш именованный URL должен иметь форму типа "вид приложения", поэтому функция reverse
или тег {% url %}
могут найти их правильно.
Каждое приложение должно содержать собственные командные команды (обычно через формальную команду, которая может быть найдена django-admin
script.
Наконец, все, что более сложное, чем простая модель или форма, которые разделены, вероятно, не принадлежит ни одному из приложений, но должна быть отдельной разделяемой библиотекой. Например, мы используем XLRD, но обертываем его части в нашем собственном классе, чтобы он больше напоминал встроенный модуль csv
. Эта оболочка для XLRD не является подходящей частью какого-либо приложения, для нее отдельный модуль, вне приложений Django.