#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 не связан с моделью, поэтому не может найти имя приложения