Как добавить каталог шаблонов в django?
Я получаю TemplateDoesNotExist at /task/
ошибку.
Это моя структура папок для проекта.
Это мой taskmate/urls.py:
from django.contrib import admin
from django.urls import path, include
urlpatterns = [
path('admin/', admin.site.urls),
path('task/',include('todolist_app.urls')),
path('todolist/',include('todolist_app.urls')),
]
Это мой todolist_app/urls.py:
from django.urls import path
#from todolist_app import views
from . import views
urlpatterns = [
path('', views.todolist, name='todolist'),
]
Это мой todolist_app/views.py:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def todolist(request):
return render(request, 'todolist.html',{})
Это мой settings.py (важные компоненты)
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [(os.path.join(os.path.dirname(os.path.dirname(__file__)),'todolist_app/templates').replace('\\','/'))],#'DIRS':
'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',
],
},
},
]
Я очень подозреваю, что проблема, которую я получаю, связана с "DIRS" шаблона. Я пробовал несколько разных вещей там, но ни одна из них, похоже, не сработала.
Вот что я пробовал там:
'DIRS': [os.path.join(BASE_DIR,'templates')],
'DIRS': [os.path.join(os.path.dirname(__file__),'templates').replace('\\','/')],#'DIRS':
'DIRS': [(os.path.join(os.path.dirname(os.path.dirname(__file__)),'todolist_app/templates').replace('\\','/'))],#'DIRS':
Я также добавил "todolist_app" в установленные приложения.
Вам нужно добавить app_name в ваш html. Это может решить проблему
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def todolist(request):
return render(request, 'app_name/todolist.html',{})
Обновление:
убедитесь, что ваш раздел settings.py TEMPLATE настроен следующим образом:
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [],
'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',
],
},
},
]
Что решило проблему, так это добавление html/todolist.html в render. т.е. это в views.py приложения todolist_app:
from django.shortcuts import render
from django.http import HttpResponse
# Create your views here.
def todolist(request):
return render(request, 'html/todolist.html',{})
Это не мое решение.