Однако в проекте Django нередко бывает несколько приложений. И каждое из этих приложений может иметь свой набор шаблонов. Чтобы разграничить шаблоны для отдельных проектов, можно создавать для шаблонов каждого приложения отдельный каталог.
Например, в нашем случае у нас одно приложение и наш проект выглядит так:
И чтобы использовать более правильный подход к проектированию проекта обычно внутри папки шаблонов создают папку с названием нашего приложения:
Тем самым у нас есть общая папка для шаблонов, в которой уже разделены все шаблоны приложений по папкам.
При этом файл settings.py можно не трогать, а лишь изменить нашу функцию в файле views.py на:
from django.shortcuts import render
def index(request):
return render(request, "blog/index.html")
PyCharm Professional Edition автоматически отслеживает изменения пути шаблонов, и он автоматически изменит путь в представлениях. Стоит отметить, что теперь в пути к шаблону страницы указывается и папка, в которой он находится: blog/index.html.
Класс TemplateResponse
В предыдущем шаге для (вызова) шаблона применялась функция render(), что является наиболее распространенным вариантом. Однако мы также можем использовать класс TemplateResponse (шаблонный ответ).
Функция index() при использовании класса TemplateResponse будет выглядеть следующим образом:
from django.template.response import TemplateResponse
def index(request):
return TemplateResponse(request, "blog/index.html")
Результат работы приложения с использованием класса TemplateResponse будет таким же, как и при использовании функции rеndеr().
Итак, мы научились создавать шаблоны НТМL-страниц и возвращать их в виде ответов пользователю на их запросы. Но в приводимых примерах мы, по сути, возвращали пустые страницы, что конечному пользователю не совсем интересно. Он
ожидает получить в ответ какую-то полезную информацию. То есть веб-приложение должно уметь заполнить шаблон страницы теми данными, которые запросил пользователь. В следующих шагах мы попробуем решить эту задачу.