#python #python-3.x #django
Вопрос:
Я знаю, что этот вопрос задавался много раз раньше, но я либо не могу найти ответ, который не устарел, либо вообще работает.
Я продолжаю получать эту ошибку, даже если мой сервер работает правильно
Environment:
Request Method: GET
Request URL: http://localhost:8000/subscribe/
Django Version: 3.1.4
Python Version: 3.8.10
Installed Applications:
['django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'app',
'subscribe']
Installed Middleware:
['django.middleware.security.SecurityMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.common.CommonMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.middleware.clickjacking.XFrameOptionsMiddleware']
Template loader postmortem
Django tried loading these templates, in this order:
Using engine django:
* django.template.loaders.app_directories.Loader: /usr/local/lib/python3.8/dist-packages/django/contrib/admin/templates/subscribe/index.html (Source does not exist)
* django.template.loaders.app_directories.Loader: /usr/local/lib/python3.8/dist-packages/django/contrib/auth/templates/subscribe/index.html (Source does not exist)
* django.template.loaders.app_directories.Loader: /root/project/subscribe/templates/subscribe/index.html (Source does not exist)
Traceback (most recent call last):
File "/usr/local/lib/python3.8/dist-packages/django/core/handlers/exception.py", line 47, in inner
response = get_response(request)
File "/usr/local/lib/python3.8/dist-packages/django/core/handlers/base.py", line 179, in _get_response
response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "/root/project/subscribe/views.py", line 16, in subscribe
return render(request, 'subscribe/index.html', {'form':sub})
File "/usr/local/lib/python3.8/dist-packages/django/shortcuts.py", line 19, in render
content = loader.render_to_string(template_name, context, request, using=using)
File "/usr/local/lib/python3.8/dist-packages/django/template/loader.py", line 61, in render_to_string
template = get_template(template_name, using=using)
File "/usr/local/lib/python3.8/dist-packages/django/template/loader.py", line 19, in get_template
raise TemplateDoesNotExist(template_name, chain=chain)
Exception Type: TemplateDoesNotExist at /subscribe/
Exception Value: subscribe/index.html
это мои настройки шаблона
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
и добавлять путь и т. Д., Но ничего не меняется.
я добавил все свои приложения в INSTALLED_APPS
.
правка 1: мой /subscribe/views.py
from django.shortcuts import render
from project.settings import EMAIL_HOST_USER
from . import forms
from django.core.mail import send_mail
def subscribe(request) :
sub = forms.Subscribe()
if request.method == 'POST':
sub = forms.Subscribe(request.POST)
subject = 'Welcome to DataFlair'
message = 'Hope you are enjoying your Django Tutorials'
recepient = str(sub['Email'].value())
send_mail(subject,
message, EMAIL_HOST_USER, [recepient], fail_silently = False)
return render(request, 'subscribe/success.html', {'recepient': recepient})
return render(request, 'subscribe/index.html', {'form':sub})
шаблоны в /приложении отображаются правильно, только те, что в /подписке, имеют ошибку. у кого-нибудь есть какие-либо идеи?
Комментарии:
1. Не могли бы вы, пожалуйста, показать свой views.py внутри вашего приложения подписаться ?
2. @amadousow привет! я только что отредактировал его!
3. если это поможет вам, то примите приведенный ниже ответ.
Ответ №1:
Попробуйте организовать свои шаблоны следующим образом: я буду считать, что подписка-это ваше приложение.
subscribe/templates/subscribe/<put your html files here>
Комментарии:
1. большое вам спасибо, что так оно и было!!
2. @stelaa я рад, что смог вам помочь. счастливого кодирования)
Ответ №2:
Вам нужно указать путь к вашему шаблону в settings.py
Обратитесь к этому
TEMPLATES = [
{
'BACKEND': 'django.template.backends.django.DjangoTemplates',
'DIRS': [os.path.join(BASE_DIR, 'templates')],
DIRS определяет список каталогов, в которых движок должен искать
исходные файлы шаблонов в порядке поиска.
Комментарии:
1. к сожалению, я уже пробовал это, и это ничего не дает :/
2. @stelaa можете ли вы показать, где вы храните файлы шаблонов
3. я отредактировал фотографию проекта!