Просмотры из разных приложений ищут шаблоны в разных местах?

#django #django-views

Вопрос:

Поэтому я пытаюсь показать шаблон домашней страницы с помощью TemplateView, но это меня очень смутило. Прямо сейчас у меня есть 3 приложения (основное, пользователи, опросы). Со следующей структурой:

 .
├── main
│   └── ...
├── (Project Folder)
│   └── ...
├── polls
│   └── ...
├── users
│   └── ...
└── templates
    ├── main
    │     └── ...
    ├── polls
    │     └── ...
    └── base.html (for extends)
 

У меня уже есть некоторые рабочие представления из опросов (CreateView, ListView, DetailView). Я знаю, что шаблоны по умолчанию ищутся в папке приложений, но я изменил ее, чтобы она была на уровне приложений, как вы можете видеть выше.

Но с этим новым приложением (основным), где у меня есть представление индекса, оно работает по-другому. В index.html ведется поиск в templates/index.html и не в templates/main/index.html. Почему приложение «Опросы» работает с папкой с именем приложения внутри шаблонов, но с main так не работает?

Settings.py

 TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [os.path.join(BASE_DIR, 'templates')],
        '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',
            ],
        },
    },
]
 

главная views.py

 # Django imports
from django.views.generic import TemplateView

class Index(TemplateView):
    template_name = 'index.html'
 

главная urls.py

 from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', include('main.urls')),
    path('', include('users.urls')),
    path('', include('polls.urls')),
]
 

Комментарии:

1. Создание/Список/Подробное представление связаны с моделью и используют имя приложения в поиске имени шаблона по умолчанию ccbv.co.uk/projects/Django/3.1/django.views.generic.edit/. … TemplateView не связан с моделью, поэтому не может найти имя приложения