Добавьте выбор папки шаблона для пакета 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 найдет шаблоны вашего приложения первым и будет использовать их при любой возможности.

Вернуться на верх