Недавно я только начал с Django и предположил, что должно быть хорошее решение для этой проблемы!Разрешить нескольким приложениям использовать {% extend base.html%} в Django без столкновения?
После установки django-allauth через pip он попытался расширить base.html
из моей папки project/templates
, а не из собственного подкаталога. This user имел такую же проблему, и ему было предложено переименовать один из файлов base.html
, а затем обновить все ссылки на него в связанных шаблонах приложений. Для сложного приложения (уже плохое) это подвержено ошибкам; это еще хуже, если несколько сторонних приложений каждый определяют свои собственные base.html
и ссылаются на него просто как {% extends 'base.html' %}
. Кроме того, я думаю, что это относится только к сторонним приложениям, так как я могу легко назвать base.html чем-то другим для каждого из моих собственных приложений, но я не хочу вмешиваться в работу сторонних приложений.
Мой вопрос: есть безопасный/простой способ разрешить нескольким сторонним приложениям использовать {% extends 'base.html' %}
без столкновения?
Я прочитал документацию на template inheritance в Django и понять, что:
- По умолчанию шаблоны загружаются из файловой системы, а затем из приложения подкаталогов. Поэтому сначала будет вызываться каталог
projects/templates
, который определен в моей настройкеTEMPLATE_DIRS
; следовательно, проблема джанго-аллаута. - Я могу отменить этот порядок для подкаталога приложения, который будет вызываться первым, изменив порядок
TEMPLATE_LOADERS
. Однако это просто означает, что мой сайт теперь будет распространяться неправильноbase.html
.
Хотя я могу зафиксировать текущее столкновение путем переименования base.html
как allauthbase.html
и изменение ссылок шаблона ребенка allauth к нему, как {% extends 'allauthbase.html' %}
, это кажется громоздким.
Большинство wierdly, this person жалуется, что каждое приложение расширяет свою собственную base.html по умолчанию, но это кажется невозможным ...
Спасибо, я этого не видел. Тем не менее, я хотел бы знать, есть ли решение, или если такие приложения считаются плохо разработанными. – ZG101