Как добавить каталог шаблонов в 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',{})

Это не мое решение.

Вернуться на верх