Django - Учебник - Настройка IndexView, но получение TemplateDoesNotExist - PullRequest
0 голосов
/ 16 мая 2018

Я перебрал все вопросы здесь уже на TemplateDoesNotExist.Я также устранял это в течение 12 часов.Есть кое-что, чего я не понимаю.Я новичок в django.

Я изучаю следующее руководство Thinkster: Создание веб-приложений с Django и AngularJS

Вот ошибка:

Расположение исключения: C: \ Users \ Workstation333 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ template \ loader.py в select_template, строка 47

Тип исключения: TemplateDoesNotExist

Значение исключения: index.html

После-шаблонный шаблонный загрузчик

Django попытался загрузить эти шаблоны в указанном порядке: Использование движка django:
  • django.template.loaders.app_directories.Loader: C: \ Users \ Workstation333 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ contrib \admin \ templates \ index.html (Источник не существует)
  • django.template.loaders.app_directories.Loader: C: \ Users \ Workstation333 \ AppData \ Local \ Programs \ Python \ Python36 \ lib \ site-packages \ django \ contrib \auth \ templates \ index.html (источник не существует)
  • django.template.loaders.app_directories.Loader: C: \ Users \ Workstation333 \ AppData \ Local \ Programs \Python \ Python36 \ lib \ site-packages \ rest_framework \ templates \ index.html (источник не существует)

Этот код IndexView мне не понятен, и я считаю, что именно в этом проблема.В учебнике этот код не рассматривается.Я думаю, что именно это меняет index.html или как его найти.Это внутри моего views.py и это та же папка проекта, где находится мой urls.py.

views.py

from django.views.decorators.csrf import ensure_csrf_cookie
from django.views.generic.base import TemplateView
from django.utils.decorators import method_decorator

class IndexView(TemplateView):
    template_name = 'index.html'

    @method_decorator(ensure_csrf_cookie)
    def dispatch(self, *args, **kwargs):
        return super(IndexView, self).dispatch(*args, **kwargs)

url.py

from django.contrib import admin
from django.urls import path, re_path, include
from rest_framework_nested import routers
from authentication.views import AccountViewSet
from HawkProject.views import IndexView

router = routers.SimpleRouter()
router.register(r'accounts', AccountViewSet)

urlpatterns = [
    path('admin/', admin.site.urls),
    re_path(r'^api/v1/', include(router.urls)),

    re_path(r'^.*$', IndexView.as_view(), name='index')
]

частичная settings.py

BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

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

Пожалуйста, помогите, и спасибо.

Редактировать:

Я добавил следующее в код, и я получил его, чтобы не сломать правильнопрочь, но я не думаю, что это решение, а взлом, который сломается или не поддается ремонту.Я добавил индекс для индекса администратора внутри Dirs следующим образом:

 'DIRS': 
['C:/Users/Workstation333/AppData/Local/Programs/Python/Python36/Lib/site- 
packages/django/contrib/admin/templates/admin'],

Я не смог найти другие индексные файлы в каталогах, где, по его мнению, они должны были быть.* обратите внимание на двойного администратора в каталоге выше, не уверен, почему это так.Это также заставляет "домашнюю" страницу перенести меня прямо на страницу администратора.

1 Ответ

0 голосов
/ 16 мая 2018

Я не прочитал учебник, который вы делаете, но попробуйте сделать это:

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

]

Как вы можете видеть, я думаю, что вы получаете эту ошибку, потому что ваш шаблондиректория 'DIRS' пуста и поэтому Django не знает, где искать 'index.html'.Имя 'templates' можно изменить на любое имя, которое вам нужно, но просто назовите его в соответствии с папкой, в которой вы храните свои шаблоны в каждом из ваших приложений.

Шаблоны Django

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