Не удается найти шаблоны форм по умолчанию после обновления django с 3.x до 4.x
Я только что обновил django с 3.x до 4.x. Я получаю ошибку template not found:
TemplateDoesNotExist at /admin/login/
django/forms/errors/list/default.html
Шаблон находится в этом месте:
./lib/python3.8/site-packages/django/forms/templates/django/forms/errors/list/default.html
Django пытается искать в этих местах:
django.template.loaders.filesystem.Loader: ./project/templates/django/forms/errors/list/default.html (Source does not exist)
django.template.loaders.app_directories.Loader: ./lib/python3.8/site-packages/django/contrib/admin/templates/django/forms/errors/list/default.html (Source does not exist)
django.template.loaders.app_directories.Loader: ./lib/python3.8/site-packages/django/contrib/auth/templates/django/forms/errors/list/default.html (Source does not exist)
django.template.loaders.app_directories.Loader: ./project/android/templates/django/forms/errors/list/default.html (Source does not exist)
django.template.loaders.app_directories.Loader: ./project/webapp/templates/django/forms/errors/list/default.html (Source does not exist)
django.template.loaders.app_directories.Loader: ./lib/python3.8/site-packages/oauth2_provider/templates/django/forms/errors/list/default.html (Source does not exist)
django.template.loaders.app_directories.Loader: ./lib/python3.8/site-packages/rest_framework/templates/django/forms/errors/list/default.html (Source does not exist)
django.template.loaders.app_directories.Loader: ./lib/python3.8/site-packages/debug_toolbar/templates/django/forms/errors/list/default.html (Source does not exist)
django.template.loaders.app_directories.Loader: ./lib/python3.8/site-packages/ajax_select/templates/django/forms/errors/list/default.html (Source does not exist)
Итак, очевидно, что django даже не заглядывает в свой собственный каталог django.forms, и я не могу понять, почему. Есть ли какие-то новые настройки в 4.x, которые я упускаю?
Я выяснил, почему эти шаблоны не найдены. Если 'django.forms' отсутствует в INSTALLED_APPS, то каталог шаблонов не найден. Я не проверял документацию Django, но, возможно, это побочный эффект ужесточения поиска шаблонов. В настройках по умолчанию есть APP_DIRS: True
, но я предполагаю, что у вас не было этого в дикте TEMPLATES, как у меня - поскольку настройки по умолчанию находят шаблон нормально (т.е. при просмотре админки)
Вот что сработало для меня:
DJANGO_APPS = [
"django.contrib.admin",
"django.contrib.auth",
"django.contrib.contenttypes",
"django.contrib.sessions",
"django.contrib.sites",
"django.contrib.messages",
"django.contrib.staticfiles",
"django.contrib.humanize",
"django.forms",
]
NB Я использую шаблон на основе cookie cutter, который отделяет приложения Django от приложений сторонних производителей и проектов.