Добавьте выбор папки шаблона для пакета django
Я относительно новичок в django и ищу помощи в управлении шаблонами пользовательских пакетов.
На работе мы используем самодельный пользовательский пакет django, который мы добавляем к установленным приложениям в наших основных проектах. Этот пакет содержит инструменты и утилиты, а также базовые шаблоны, которые мы используем в основных проектах.
Что меняется? Нам нужно обновить наш фронтенд и мы меняем библиотеки, что влияет на шаблоны в этом пользовательском пакете.
Чтобы не множить ветки и версии пользовательских пакетов (у нас уже есть несколько для разных версий django), и учитывая, что шаблоны в наших существующих приложениях не будут обновляться все сразу, мы хотим сделать так, чтобы основной проект использовал либо старые шаблоны, либо новую версию шаблонов (выбор переменной или по умолчанию).
К чему я стремлюсь (если возможно):
- добавление уровня папки в папке шаблонов пользовательского пакета, в которой будет искать проект
- добавление переменной (например, в файле settings.py проекта) для указания того, какую папку шаблонов нужно искать в пакете основному проекту
- отсутствие необходимости изменять старую папку templates в пакете или старые шаблоны в приложениях. Например, критическое обновление, связанное с безопасностью в этом пакете, не должно требовать обновления всех шаблонов в существующем проекте на основе старых шаблонов). .
Я изучил, как пакет django-crispy-forms делает свой выбор версии bootstrap, но, насколько я понял, он систематически рендерит представление элемента, давая точность пакета шаблонов, что, как мне кажется, потребует огромных общих усилий, поскольку наши базовые шаблоны приложения происходят от шаблонов пользовательского пакета с помощью простого {% extends "custom_package/templatename.html" %}
Я также пытался разобраться с загрузчиками django, но, признаться, я не уверен, что это правильный путь, и, несмотря на чтение документации django по этому вопросу, я все еще нахожу их немного загадочными и не знаю, как мне поступить для нашей конкретной цели.
Может быть, я что-то упускаю в django-crispy-forms? Или загрузчики были бы уместным/лучшим углом, и если да, то как бы вы объяснили их 10-летнему ребенку ваших соседей? Может быть, у вас есть другой вариант, который поможет достичь нашей цели?
Любая помощь приветствуется!
Если вы хотите, чтобы django использовал ваши шаблоны, когда это возможно, и использовал шаблоны с тем же именем, когда это необходимо, этот ответ будет полезен.
Django имеет FileSystemFinder, который будет искать шаблоны в STATICFILES_DIRS
. Если вы зарегистрируете свои приложения перед другими приложениями в STATICFILES_DIR, django найдет шаблоны вашего приложения первым и будет использовать их при любой возможности.