TemplateDoesNotExist at /Umfragen/
Habe ich versucht, aus der Django-tutorialDjango-Tutorial Seite 3 und begegnet dieser Fehler
"TemplateDoesNotExist at /Umfragen/" .
Ich nehme an, das problem ist mit meinem code zeigen der Vorlagen-Datei index.html. Das ist meine Datei-Struktur für index.html
: mysite/polls/templates/polls
.
Ich kopiere meine settings.py
und views.py
hier.
settings.py
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
Ansichten. Py
from django.shortcuts import render
from django.http import HttpResponse
from django.template import RequestContext, loader
from polls.models import Poll
# Create your views here.
#def index(request):
#return HttpResponse("Hello, world. You are at the poll index.")
def index(request):
latest_poll_list = Poll.objects.order_by('-pub_date')[:5]
template = loader.get_template('polls/index.html')
context = RequestContext(request, {
'latest_poll_list': latest_poll_list,
})
return HttpResponse(template.render(context))
def detail(request,poll_id):
return HttpResponse("You're looking at the results of the poll %s." % poll_id)
def results(request, poll_id):
return HttpResponse("You're looking at the results of poll %s." % poll_id)
def vote(request,poll_id):
return HttpResponse("You're voting on poll %s." % poll_id)
Kann jemand hinein schauen und mir zu helfen, beheben Sie diese Fehler. Jede Hilfe würde geschätzt werden.
Dies ist der traceback " Umwelt:
Request Method: GET
Request URL: http://localhost:8000/polls/
Django Version: 1.6.4
Python Version: 3.4.0
Installed Applications:
('django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls')
Installed Middleware:
('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 Error:
Django tried loading these templates, in this order:
Using loader django.template.loaders.filesystem.Loader:
C:\Python34\mysite\templates\polls\index.html (File does not exist)
Using loader django.template.loaders.app_directories.Loader:
C:\Python34\lib\site-packages\django\contrib\admin\templates\polls\index.html (File does not exist)
C:\Python34\lib\site-packages\django\contrib\auth\templates\polls\index.html (File does not exist)
C:\Python34\mysite\polls\templates\polls\index.html (File does not exist)
Traceback:
File "C:\Python34\lib\site-packages\django\core\handlers\base.py" in get_response
114. response = wrapped_callback(request, *callback_args, **callback_kwargs)
File "C:\Python34\mysite\polls\views.py" in index
14. template = loader.get_template('polls/index.html')
File "C:\Python34\lib\site-packages\django\template\loader.py" in get_template
138. template, origin = find_template(template_name)
File "C:\Python34\lib\site-packages\django\template\loader.py" in find_template
131. raise TemplateDoesNotExist(name)
Exception Type: TemplateDoesNotExist at /polls/
Exception Value: polls/index.html`
Bitte lassen Sie mich wissen, wenn ich verpasst etwas, das würde ein mehr klares Bild. Vielen Dank im Voraus.
Settings.py """
Django settings for mysite project.
For more information on this file, see
https://docs.djangoproject.com/en/1.6/topics/settings/
For the full list of settings and their values, see
https://docs.djangoproject.com/en/1.6/ref/settings/
"""
# Build paths inside the project like this: os.path.join(BASE_DIR, ...)
import os
BASE_DIR = os.path.dirname(os.path.dirname(__file__))
# Quick-start development settings - unsuitable for production
# See https://docs.djangoproject.com/en/1.6/howto/deployment/checklist/
# SECURITY WARNING: keep the secret key used in production secret!
SECRET_KEY = 'ma_x5+pnvp$o7#5g#lb)0g$sa5ln%k(z#wcahwib4dngbbe9^='
# SECURITY WARNING: don't run with debug turned on in production!
DEBUG = True
TEMPLATE_DEBUG = True
ALLOWED_HOSTS = []
# Application definition
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'polls',
)
MIDDLEWARE_CLASSES = (
'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',
)
ROOT_URLCONF = 'mysite.urls'
WSGI_APPLICATION = 'mysite.wsgi.application'
# Database
# https://docs.djangoproject.com/en/1.6/ref/settings/#databases
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'C://Python34/mysite/db.sqlite3'),
}
}
# Internationalization
# https://docs.djangoproject.com/en/1.6/topics/i18n/
LANGUAGE_CODE = 'en-us'
TIME_ZONE = 'UTC'
USE_I18N = True
USE_L10N = True
USE_TZ = True
#TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
# Static files (CSS, JavaScript, Images)
# https://docs.djangoproject.com/en/1.6/howto/static-files/
STATIC_URL = '/static/'
Du musst angemeldet sein, um einen Kommentar abzugeben.
Whoa Whoa Whoa. Wir nicht befürworten, nicht re-usability von apps.
Für Vorlagen, die nicht passen anderswo (in der Regel der Basis-Vorlage, vielleicht teilweise einige Vorlagen wie form enthält, etc.), es ist gut, setzen Sie Sie in Ihr root-Template-Verzeichnis (ie.
/path/to/project/templates/base.html
). Sie beziehen würde, um Sie in einer Ansicht für das rendering alsbase.html
.Andere Vorlagen zu erstellen, würde ich Ihnen raten, setzen Sie Sie in das Verzeichnis der app, enthält die Ansichten, Rendern, um diese Vorlagen. Zum Beispiel, Ihre Umfragen index gehen würde irgendwo wie
/path/to/project/polls/templates/polls/index.html
.Extra
polls
Verzeichnis Aussehen kann redundant vorhanden, aber der Grund dafür ist, dass die django-template-loader (logisch) dump all Ihre Vorlagen in einem Verzeichnis. So verwenden wir die zweitepolls
Verzeichnis zu differenzieren zwischen mehrerenindex.html
Vorlagen, die eventuell existieren. So in Ihrer Ansicht, die Sie verwenden würdenpolls/index.html
normal.Dem Grund, dass dies eine Gute Sache ist, dass es macht Ihren apps leichter wiederverwendbar. SCHRIFTLICHEN Umfragen-app? Du hast geschrieben Sie alle. Wenn Sie dies tun, und halten Sie auch Ihre app-spezifische statische Dateien (js, css, Bilder, usw.) im app-static-Verzeichnis, und haben eine
urls.py
für jede app, in der Regel alles, was Sie tun müssen, um zu bewegen Ihre app von einem Projekt in ein anderes kopieren, das Verzeichnis, hinzufügen, um das neue Projekt istINSTALLED_APPS
, und fügen Sie die urls von Ihrer Basisurls.py
. Und natürlich, ändern Sie die app in irgendeiner Weise, die Sie benötigen, um für das neue Projekt.Bedeutet es auch, wenn man mit einem editor mit sidebar-navigation (die meisten von Ihnen, in diesen Tagen), Sie nicht haben, um ganz nach unten scrollen, um Ihre Vorlagen zu finden, die die Vorlage für diese app. Wenn Sie die Arbeit an großen Projekten wird dies mühsam, schnell.
Die einzige Sache zu erinnern, bei der Verwendung dieser Technik ist, dass Sie müssen
django.template.loaders.app_directories.Loader
in IhremTEMPLATE_LOADERS
Einstellung. Dies ist die Standardeinstellung, so dass Sie in der Regel nicht haben, sich darum zu kümmern.Gibt es eine schöne Anleitung für dieses in der django-Dokumentation: https://docs.djangoproject.com/en/1.7/intro/reusable-apps/
Antwort auf die Frage, die Sie fragte:
Ihre
index.html
sollte hier sein:C:\Python34\mysite\polls\templates\polls\index.html
. Wenn es nicht ist, das ist, was du falsch machst.Auf einem verwandten beachten, sollten Sie wahrscheinlich nicht haben, Ihr Projekt in der Python-Verzeichnis.
'NAME': os.path.join(BASE_DIR, 'C://Python34/mysite/db.sqlite3'),
ist nicht richtig. Wenn Sieos.path.join()
Sie das hinzufügen des zweiten Parameters, um Ihre Basis-Verzeichnis der Verzeichnis-Ihrmanage.py
ist. So sind Sie am Ende mitc:/path/to/project/c://python/etc
ergibt keinen Sinn. Ich denke auch, Sie brauchen nur einen Schrägstrich nach derc:
. Aber das zweite argumentos.path.join()
sollte nur'db.sqlite3'
.C:\Python34\mysite\polls\templates\polls\index.html (File does not exist)
es wird auf der Suche an der richtigen Stelle. Könnte es sein, eine groß-und Kleinschreibung problem oder ein Tippfehler?Versuchen das template-Ordner in Projekten root-Ordner:
mysite/templates/polls/index.html
Erklärung
Ihre Vorlage dirs
TEMPLATE_DIRS = [os.path.join(BASE_DIR, 'templates')]
Es containts nur ein Verzeichnis:
/path/to/your/project/templates
Und Ihre index.html befindet sich in
/path/to/your/project/polls/templates
Update
Wie Sie sagen, es funktioniert nicht mit Vorlagen gespeichert
mysite/templates/polls/index.html
lassen Sie uns versuchen auf diese Weise:gehen mysite und führen
laufen interaktive interpreter mit
mysite
als Kontext. Danach dies ausführen:wird die Ausgabe etwas wie
Django verwendet diese Verzeichnisse finden Sie Ihre Vorlagen.
Daher sollten Sie setzen-Verzeichnis
polls/
im Ordner vonTEMPLATE_DIRS
.mysite/templates/polls/index.html
Lesen Sie Bitte die Antworten richtig das nächste malIch hatte das gleiche problem, und ich merkte es war eine andere HTML-Datei namens
index
imsite-packages
. Also ich habe gerade meine aktuellen HTML-Datei zuindex1
- und es funktionierte.Befolgen Sie diese Struktur,
da etwas vermuten zu Ihrem TEMPLATE_DIRS Weg. Es sollte zeigen Sie auf der Wurzel von Ihrem template-Verzeichnis.
In Ihrer Fehler-log-django suchen diese Pfade,
Sie vergessen haben, fügen Sie Ihrem app-config in der INSTALLED_APP in settings.py
INSTALLED_APPS = (
)
In Ihrem settings.py Datei, fügen Sie diese
Und dann in den VORLAGEN-VERZEICHNISSE, fügen Sie diese,
Versuchen zu ersetzen:
mit dabei:
Prüfen Sie, ob Sie vergaß das " s " in
seine
Sicherzustellen, dass Sie nicht falsch schreiben detail.html als details.html. Das war mein problem.