Django 3 InvalidTemplateEngineError - PullRequest
       37

Django 3 InvalidTemplateEngineError

0 голосов
/ 04 мая 2020

Я пытаюсь загрузить шаблон страницы html, но появляется сообщение об ошибке. То, что я пытаюсь отладить, все еще плохо знакомо с django, но большую часть времени я могу понять это. Но в полной потере на этом.

Что-то связанное с движком шаблонов либо в setting.py, либо в представлении шаблона, либо в URL. Я думаю, что-то в настройках шаблона.

Я сделал несколько поисков без удачи. Там нет ошибок в консоли отладки в виртуальной студии. Как раз когда я go URL из шаблонов html. Любая обратная связь или советы о том, как лучше прочитать ошибку, будут оценены.


"Set a unique NAME for each engine in settings.TEMPLATES."

             .format(", ".join(duplicates)))

     return templates

 def __getitem__(self, alias):

     try:

         return self._engines[alias]

…

     except KeyError:

         try:

             params = self.templates[alias]

         except KeyError:

             raise InvalidTemplateEngineError(

                 "Could not find config for '{}'

picture of error

Я предполагаю, что должен настроить basic_app / school_detail. html в разделе шаблонов файла settings.py. Вот где я застрял.

поднять InvalidTemplateEngineError (django .template.utils.InvalidTemplateEngineError: Не удалось найти конфигурацию для 'basic_app / school_detail. html' в настройках.TEMPLATES


Это ошибка, которая возникает.

InvalidTemplateEngineError at / basic_app / 1 /

Не удалось найти конфигурацию для 'basic_app / school_detail. html' в настройках.TEMPLATES

Метод запроса: GET URL запроса: http://127.0.0.1: 8000 / basic_app / 1 / Django Версия: 3.0.4 Тип исключения: InvalidTemplateEngineError Значение исключения:

Не удалось найдите конфигурацию для 'basic_app / school_detail. html' в настройках. ШАБЛОНЫ

Расположение исключения: C: \ Users \ taylo \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site- пакеты \ django \ template \ utils.py в getitem , строка 71 Python Исполняемый файл: C: \ Users \ taylo \ AppData \ Local \ Programs \ Python \ Python38-32 \ python. exe Python версия: 3.8.2 Python путь:

['C: \ Users \ taylo \ djan go \ Advanced_Django_CBV \ advcbv ',' C: \ Python \ Python37 \ Lib ',' C: \ Python \ Python37 \ DLLs ',' C: \ Python \ Python37 \ Lib \ lib-tk ', 'C: \ Python \ Python37 \ Scripts', 'C: \ Python \ Python37 \ tcl', 'C: \ Python \ Python37 \ Tools', 'C: \ Users \ taylo \ AppData \ Local \ Programs \ Python \ Python38-32 \ python38.zip ',' C: \ Users \ taylo \ AppData \ Local \ Programs \ Python \ Python38-32 \ DLLs ',' C: \ Users \ taylo \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib ',' C: \ Users \ taylo \ AppData \ Local \ Programs \ Python \ Python38-32 ',' C: \ Users \ taylo \ AppData \ Roaming \ Python \ Python38 \ site-packages ',' C: \ Users \ taylo \ AppData \ Local \ Programs \ Python \ Python38-32 \ lib \ site-packages ']

Время сервера: Пн, 4 мая 2020 г. 16:24:46 + 0000

=============================== =========================================

settings.py

================================================== ==============


# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))

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

# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/3.0/howto/static-files/

STATIC_URL = '/static/'


=========================== =======================================

* 104 7 * School_detail. html

==================================== ===========================

{% extends "basic_app/basic_app_base.html" %}

{% block body_block %}

<div class="jumbotron">


<h1>Welcome to the School Detail Page </h1>
    <h2></h2>
    <p><b>Name: </b>{{school_detail.name}}</p>
    <p><b>Principal: </b> {{school_detail.principal}}</p>
    <p><b>Location: </b>{{school_detail.location}}</p>
    <h3><b>Students: </b></h3>

{% for student in school_detail.students.all %}
 <p>{{student.name}} who's student id is {{student.info}}</p>
{% endfor %}

</div>


{% endblock %}

enter image description here

================================================= ==================

basic_app. html

from django.db import models

# Create your models here.
class School(models.Model):
    name = models.CharField(max_length=256)
    Principal = models.CharField(max_length=256)
    location = models.CharField(max_length=256)

    def __str__(self):
        return self.name

class Student(models.Model):
    name = models.CharField(max_length=256)
    info = models.CharField(max_length=256)
    School = models.ForeignKey(School,  on_delete=models.CASCADE, related_name='students')

    def __str__(self):
        return self.name

изображение каталога

urls.py

from django.conf.urls import url
from basic_app import views

app_name = 'basic_app'

urlpatterns = [
    url(r'^$',views.SchoolListView.as_view(),name='list'),
    url(r'^(?P<pk>[-\w]+)/$', views.SchoolDetailView.as_view(), name='detail')

]

views.py

from django.shortcuts import render
from django.views.generic import View, TemplateView, ListView, DetailView
from . import models


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

class SchoolListView(ListView):
    context_object_name = 'schools'
    model = models.School
    # returns school_list

class SchoolDetailView(DetailView):
    context_object_name = 'school_detail'
    model = models.School
    template_engine = 'basic_app/school_detail.html'


Я пытался изменить settings.py

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [TEMPLATE_DIR,],
        'APP_DIRS': True,

Я также изменил это, но не сделал не работает

import os

# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
TEMPLATE_DIR = os.path.join(BASE_DIR,'templates')
...