Рекомендуется: tasks/templates/tasks/ чтобы избежать конфликтов имён между приложениями.
Настройка поиска шаблонов
# settings.py
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [BASE_DIR / 'templates'], # папка шаблонов проекта
'APP_DIRS': True, # искать в <app>/templates/ каждого приложения
'OPTIONS': {
'context_processors': [...],
},
},
]
Структура папок
mysite/
├── templates/ # DIRS — общие шаблоны
│ └── base.html
├── tasks/
│ └── templates/ # APP_DIRS — шаблоны приложения
│ └── tasks/
│ ├── list.html
│ └── detail.html
Рекомендуется: tasks/templates/tasks/ чтобы избежать конфликтов имён между приложениями.
Использование в view
# По пути от DIRS или app/templates/
return render(request, 'tasks/list.html', context)
return render(request, 'base.html', context)
Наследование шаблонов
<!-- templates/base.html -->
<!DOCTYPE html>
<html>
<head><title>{% block title %}Сайт{% endblock %}</title></head>
<body>
{% block content %}{% endblock %}
</body>
</html>
<!-- tasks/templates/tasks/list.html -->
{% extends 'base.html' %}
{% block title %}Задачи{% endblock %}
{% block content %}
<h1>Список задач</h1>
{% endblock %}
include — вставка фрагментов
<!-- Вставить другой шаблон -->
{% include 'partials/task_card.html' with task=task %}
<!-- tasks/templates/partials/task_card.html -->
<div class="card">
<h3>{{ task.title }}</h3>
<span>{{ task.get_status_display }}</span>
</div>
Отладка поиска шаблонов
# Если шаблон не найден, Django выдаст TemplateDoesNotExist
# с указанием всех путей, где искал
В DEBUG=True ошибка показывает список поиска.
💬 Комментарии (0)
Комментариев пока нет
Станьте первым, кто поделится мнением об этой статье!