Почему консоль показывает шаблоны не определена ошибка в Django - PullRequest
0 голосов
/ 16 июня 2019

Я новичок в django, я сталкиваюсь с одним из них, когда django работает на сервере, я скопировал и вставил свой код, пожалуйста, скажите мне, что не так с моим кодом

'DIRS': [templates],
NameError: name 'templates' is not defined

в файле settings.py, япоместил шаблоны в [] скобки

TEMPLATES = [
    {
        'BACKEND': 'django.template.backends.django.DjangoTemplates',
        'DIRS': [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',
            ],
        },
    },
] 

это мои views.py

from django.http import HttpResponse
from django.shortcuts import render

def index(response):
    return render(request,'index.html')

это urls.py

from django.contrib import admin
from django.urls import path
from . import views

urlpatterns = [
    path('admin/', admin.site.urls),
    path('', views.index, name='index'),
    path('about', views.about, name='about'),
]

Ответы [ 3 ]

1 голос
/ 16 июня 2019

Вам нужно изменить DIRS здесь

'DIRS': [os.path.join(BASE_DIR, 'templates')],

Здесь Django ожидает, что у него есть путь к шаблону, но вы предоставляете переменную templates, которая не имеет никакого пути.

0 голосов
/ 16 июня 2019

В то время как другие уже дали правильные ответы на , как это исправить , но я хотел бы отметить небольшую вещь, которую вы получаете NameError, потому что вы не определили имя templates.

NameError возникает, когда используемая переменная не определена где-либо в программе (если вы определили ее вне текущей области, вы получите UnboundLocalError).

Если вы определите шаблоны имен как строку для абсолютного пути к папке с шаблонами, это будет работать. Тем не менее, никогда не используйте абсолютный путь в вашем приложении Django, потому что это станет головной болью при развертывании.

0 голосов
/ 16 июня 2019

Вы должны изменить свою линию на

'DIRS': [os.path.join(BASE_DIR, 'templates')],

В начале файлов настроек вы можете увидеть BASE_DIR

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

Изменение DIRS на

'DIRS': [os.path.join(BASE_DIR, 'templates')],

Поможет приложению найти папку с шаблонами. Просто личный совет в каждом магазине приложений, в папке templates / appname для конкретного приложения. Это поможет вам иметь более надежное приложение Django.

например, у вас есть приложение для опросов, внутри приложения для опросов это будет выглядеть так

pollsApp / templates / pollsApp / index.html и т. Д.

Также вот официальное руководство, оно может помочь вам

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