Список и кортеж не работают, несмотря на устранение `django.core.excptions.ImproperlyConfigured: Параметр TEMPLATE_DIRS должен быть списком или кортежем` ошибка
Я столкнулся с проблемой в моем приложении Django. Запустив Python manage.py runserver в моей среде разработки, я получаю эту ошибку:
django.core.excptions.ImproperlyConfigured. The TEMPLATE_DIRS setting must be a list or a tuple
. После изменения TEMPLATE_DIRS
на кортеж в settings.py следующим образом TEMPLATE_DIRS = (os.path.join(BASE_DIR, 'templates'),)
я получил :
TypeError('Invalid path type: %s' % type(value).__name__)TypeError: Invalid path type: tuple.
Я получил аналогичный ответ, когда изменил его на список. Тем временем, запустив Python manage.py runserver вне среды разработки, я получил:
expected str, bytes or os.PathLike object, not tuple on both times I changed TEMPLATE_DIRS to a list and tuple
.
Я также должен добавить, что мои файлы шаблонов не загружаются. Я получаю:
Используя URLconf, определенный в файле myProject.urls, Django попробовал эти шаблоны URL шаблоны, в таком порядке:
accounts/ admin/ The current path, index/, didn't match any of these
Вот дерево проекта:
|_______myApp
|______ |______pycache__
| |______migrations
| |________init__
| |______admin
| |______apps
| |______models
| |______tests
| |______urls
| |______views
|______myProject
| |________init__
| |______asgi
| |______settings
| |______urls
| |______wsgi
|______env
|______static
|______templates
|______myApp
|______index.html
|______signup.html
manage.py
myProject/urls.py
from django.contrib import admin
from django.urls import include, path
urlpatterns = [
path('accounts/', include('accounts.urls')),
path('admin/', admin.site.urls),
]
myApp/urls.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('signup/', views.signup, name='signup'),
]
views.py
from django.urls import path
from . import views
urlpatterns = [
path('', views.index, name='index'),
path('signup/', views.signup, name='signup'),
]
settings.py
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates'), ]
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [TEMPLATE_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',
'django.template.context_processors.media',
], }, },]
Я не знаю, как еще это исправить.
TEMPLATE_DIRS
является уже списком, поэтому нет смысла снова заворачивать его в список, следует определить установку TEMPLATES
как:
TEMPLATES = [
{
# …,
'DIRS': TEMPLATE_DIRS,
# …
}
]