#django #django-templates
#django #django-шаблоны
Вопрос:
в моем проекте моя папка шаблонов выглядит следующим образом. В обеих папках у меня есть шаблон с именем results.html
templates
|--customer_site
| |--results.html
|
|backoffice
|--results.html
для сайта, ориентированного на клиента, мой файл настроек содержит
TEMPLATES = [{
...
'DIRS': ['templates/customer_site'],
}]
в одной конкретной функции на сайте, ориентированном на клиента, мне нужно получить доступ к шаблону с именем results.html который находится в бэк-офисе.
def some_function(request):
....
....
return render(request, 'results.html')
это возвращает results.html страница сайта, ориентированного на клиента, но я хочу, чтобы results.html страница доступна в папке backoffice.
Комментарии:
1. почему бы просто не установить
DIRS
маршрут в качестве шаблонов вместо этого? вот почему вы можете просто указать/backoffice/results.html
на свой взгляд2. Это идеальное решение, но я нахожусь на завершающей стадии своего проекта, и у меня есть несколько шаблонов с одинаковыми именами, но разными макетами, поэтому я не могу этого сделать.
Ответ №1:
Метод 1: вы можете либо установить свой статический маршрут к основной папке templates (это стандартный способ выполнения и то, что я предпочитаю):
TEMPLATES = [{
...
'DIRS': ['templates'],
}]
И, по вашему мнению:
//modify other views to use customer_site/results.html
return render(request, 'backoffice/results.html')
Метод 2:
добавьте другую папку path в каталоги:
'DIRS': [
'templates/customer_site',
'templates/backoffice'
],
чтобы это сработало, вам нужно изменить results.html
имя вашего файла в backoffice, чтобы оно не совпадало с именем в customer_site
. Измените его на что-то вроде backoffice_results.html
поэтому, если он не может найти from templates/customer_site
, он перейдет к следующему template_dirs
return render(request, 'backoffice_results.html')
Комментарии:
1. это то, что я изначально пытался, но по какой-то причине это выдает ошибку с указанием «TemplateDoesNotExist»
2. @IrfanHarun я обновил метод 2 на другой способ сделать это
3. Спасибо, в итоге я использовал метод 2, и он работал просто отлично.