Как загрузить шаблоны в Django для конкретного приложения?
Итак, я изучаю Django на продвинутом уровне, я уже знаю, как включать шаблоны из BASE_DIR, где находится manage.py. Однако я хотел бы знать, как найти шаблоны в конкретном приложении в Django.
Например, у меня есть проект под названием 'mysite' и приложение под названием polls.
Теперь я добавил шаблоны в settings.py DIRS=[os.path.join(BASE_DIR, "templates")].
но, как добавить шаблоны, специфичные для приложения polls, в каталог приложений polls?
.
├── db.sqlite3
├── manage.py
├── mysite
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── polls
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── __init__.py
│ ├── models.py
│ ├── static
│ │ ├── images
│ │ ├── scripts.js
│ │ └── style.css
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└── templates
├── polls
│ └── index.html
└── static
├── images
├── scripts.js
└── style.css
Раньше я хотел, чтобы это выглядело так.
.
├── db.sqlite3
├── manage.py
├── mysite
│ ├── asgi.py
│ ├── __init__.py
│ ├── settings.py
│ ├── urls.py
│ └── wsgi.py
├── polls
│ ├── admin.py
│ ├── apps.py
│ ├── __init__.py
│ ├── migrations
│ │ ├── __init__.py
│ ├── models.py
│ ├── static
│ │ ├── images
│ │ ├── scripts.js
│ │ └── style.css
│ ├── templates
│ │ ├── polls
│ | │ ├── index.html
│ ├── tests.py
│ ├── urls.py
│ └── views.py
└── templates
├── polls
│ └── index.html
└── static
├── images
├── scripts.js
└── style.css
Django ищет шаблоны во всех DIRS, упомянутых в TEMPLATES в файле settings.py.
Для DIRS=[os.path.join(BASE_DIR, "templates")], django будет искать в каталоге "templates".
Получение шаблона для конкретного приложения, скажем, "Опросы". Для этого, где бы вы ни ссылались на шаблон, вам нужно указать директорию из корня, исключая папку шаблона.
Э.г.
для ссылки на шаблон index.html вы должны упомянуть его как
template_name="polls/index.html"
Если у вас есть шаблоны для конкретного приложения, расположенные по адресу "polls/templates/polls/", то вам нужно добавить этот путь к TEMPLATES в settings.py, как показано ниже
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': ['polls/templates'], # here the app template path is set
'APP_DIRS': True,
'OPTIONS': {
'context_processors': [
'django.template.context_processors.debug',
'django.template.context_processors.request',
'django.contrib.auth.context_processors.auth',
'django.contrib.messages.context_processors.messages',
],
},
},
]
А при рендеринге шаблона путь должен иметь префикс папки, как
render(request, 'polls/index.html', context)