шаблон не существует, используя общие представления - PullRequest
0 голосов
/ 20 сентября 2018

после обучения django я перешел на общие представления, и теперь мои шаблоны больше не могут быть найдены.

ошибка: TemplateDoesNotExist в / artdb / test2

похоже, он находит правильный каталог:

Using engine django:
django.template.loaders.filesystem.Loader: /Users/jonas/Dropbox/prog/web/django/winmalist/templates/artdb/test2 (Source does not exist)

путь к шаблонам:

 /Users/jonas/Dropbox/prog/web/django/winmalist/templates/artdb:
  total used in directory 24 available 9223372036852770383
  drwxr-xr-x@ 5 jonas  staff  160 Sep 20 09:59 .
  drwxr-xr-x@ 4 jonas  staff  128 Sep  9 15:50 ..
  -rw-r--r--@ 1 jonas  staff  215 Sep 19 10:47 index.html
  -rw-r--r--@ 1 jonas  staff  212 Sep 19 16:02 test1.html
  -rw-r--r--@ 1 jonas  staff  253 Sep 20 09:59 test2.html

urls.py:

from django.urls import path
from django.views.generic import TemplateView
# from . import views

app_name='artdb'
urlpatterns = [
    path('artdb',TemplateView.as_view(template_name='index')),
    path('test2',TemplateView.as_view(template_name='artdb/test2')),
#     path('', views.IndexView.as_view(), name='index'),
#     path('contract', views.contract, name='contract'), 
#     path('<int:person_id>/test1/', views.test1, name='test1'),

settings.py:

ROOT_URLCONF = 'winmalist.urls'

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',
            ],
        },
    },
]

1 Ответ

0 голосов
/ 20 сентября 2018

Вы забыли здесь суффикс .html:

app_name='artdb'

urlpatterns = [
    path('artdb',TemplateView.as_view(template_name='index<b>.html</b>')),
    path('test2',TemplateView.as_view(template_name='artdb/test2<b>.html</b>')),
    # ...
]

template_name указывает на файл (с "относительным" путем к файлу), который включает расширение.

документация о представлениях на основе классов обычно также содержит суффикс .html.

Обратите внимание, что за исключением некоторых заслуживающих внимания краевых случаев, один типично подклассы эти Views, и, следовательно, реализовать логику вокруг него (например, контекст рендеринга и т. д.).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...