Я новичок в Django и довольно смущен тем, как лучше всего интегрировать сторонние приложения. В моей (возможно наивной) интерпретации DRY я хочу свести к минимуму копирование/вставку не только моего собственного кода, но и кода других людей, поэтому я доволен, например, шаблоном использования contrib.auth, как в основном черного если мне нужна дополнительная информация об auth.User (путем расширения auth.User с объектом UserProfile или наследованием). Именно так я и предполагал, что буду использовать большинство сторонних приложений.интеграции сторонних приложений и шаблонов django
Однако я быстро обнаружил, что это было очень сложно, поэтому теперь я смирился с «копиями» всех моих сторонних приложений, живущих внутри моей папки проекта, которые в основном являются целыми копиями с минимальными изменениями. Последняя солома заключалась в том, что я хотел добавить базовый блог (я остановился на django-basic-blog) и мне нужно просто сменить один шаблон, и я не думал о лучшем решении, кроме как сделать копию этого приложения в моем проекте с помощью один шаблон изменен.
Мои вопросы:
- в данном конкретном случае, когда мне нужно изменить только один шаблон, это (скопировать все приложения более) лучшее, что я могу сделать? Если бы мне просто нужно было сменить одну модель, я мог бы сохранить стороннее приложение практически без изменений и сделать наследование модели в моем собственном приложении ...
- в целом, эта практика копирования приложений в рамках моего проекта и исправления каждого из них маленький кролик чувствует себя безумно расточительным и грязным. Также кажется, что если я использую часто обновляемое стороннее приложение, будет больно синхронизировать изменения. Должен ли я просто научиться любить бомбу или есть какая-то очевидная архитектурная схема/помощь, предоставляемая Django, которую я пропускаю?
ах. Спасибо. Это прекрасно отвечает моему первому вопросу. – yanzhang
, также из вашего ответа вы, кажется, подразумеваете, что почти всегда есть возможность использовать сторонние модули без явного изменения их кода. Позвольте мне теперь угадать, что вы научили меня шаблонам: похоже, для каждого стороннего приложения «ИхАпп» я должен создать каталог «MyApp», в котором я импортирую/расширяю модели и представления из ихApp, создаю/шаблонов (и убедитесь, что порядок прав в TEMPLATE_LOADERS), и добавьте оба параметра MyApp и MyApp в настройки. Правильно ли это? – yanzhang
В вашем проекте обычно есть каталог «/ templates», в котором находятся ваши шаблоны. Положите там и другие шаблоны. –