2017-05-18 3 views
0

Ich habe eine begin.html-Datei, die ich versuche, auf localhost zuzugreifen: 8000/begin, aber ich bekomme den DjangoTemplateDoesNotExist Fehler beim Versuch, darauf zuzugreifen.Django TemplateDoesNotExist, aber traceback erreicht ansichten.py

Das einzige, was in dieser Vorlage ist

<h1>welcome to my app !</h1> 

und es ist in dem app/Template-Verzeichnis.

Im gleichen App-Verzeichnis ist meine views.py-Datei, die in beginnen erreicht ist, da sowohl die print-Anweisung und die Zurückverfolgungs sagen Sie mir, aber Django nicht finden kann,

# -*- coding: utf-8 -*- 
from __future__ import unicode_literals 

from django.shortcuts import render 

# Create your views here. 

def begin(request): 
    print("DEBUG STATEMENT") 
    return render(request, "template/begin.html", {}) 

Die return-Anweisung enthält die Vorlage nach.

Wenn es relevant ist, meine urls.py Datei ist

from django.conf.urls import url 
from django.contrib import admin 

from app.views import begin 

urlpatterns = [ 
    url(r'^admin/', admin.site.urls), 
    url(r'^begin/$', begin, name = 'begin') 
] 

im Projektverzeichnis.

+3

Versuchen Sie, 'Vorlagen' aus der Rendermethode zu entfernen. Verwenden Sie nur 'begin.html'. –

+0

Wie sieht Ihre Ordnerstruktur in Ihrer App aus? –

+0

Das gab mir den gleichen Fehler. – plzhalpplzxubtunu

Antwort

0

Da Sie die Informationen nicht angegeben haben, nehme ich es so, wie Sie meinen, urls.py in Ihrer App. Wenn Sie zwei urls.py haben, müssen Sie von den ersten URLs, wo django zum anderen schaut, umleiten.

from django.conf.urls import include 

urlpatterns = [ 
    url(r'^', include('YOURAPPNAME.urls')) 
] 

In Ihrem AppDirectory in urls.py

from . import views //importing views from current directory 
urlpatterns = [ 
    url(r'^begin/$' views.begin, name=begin) 
] 

Noch ein Tipp schreiben, sollten Sie render_to_response verwenden, wenn Sie eine HTTP-Antwort verwenden, ich weiß, machen neuere, aber da Sie eine Antwort verwenden i würde in Ihrem Fall mit render_to_response gehen und den Kontext überspringen.

return render_to_response('YOURAPPNAME'/begin.html) 
0

Überprüfen Sie, ob Ihre Template-Struktur wie diese,

your_app_name 
--> **templates** 
    --> **your_app_name** 
     --> **'begin.html'** 
--> static 
--> models.py 
--> ........ 

Dann Ihre Ansichten ändern, wie diese,

return render(request, "your_app_name/begin.html", {}) 

Django als Standardprüfung für das Verzeichnis unter dem Namen „Vorlagen ", in Ihrem App-Verzeichnis. Wenn mehrere Apps unterstützt werden, werden Easy-Templates in dem Verzeichnis mit app_name gespeichert.

Vom docs,

Es ist möglich - und bevorzugt - Vorlagen in Verzeichnissen in jedem Verzeichnis Vorlagen zu organisieren enthält. Die Konvention besteht darin, für jede Django-App ein Unterverzeichnis zu erstellen, das nach Bedarf Unterverzeichnisse in diesen Unterverzeichnissen enthält.

Tun Sie dies für Ihre eigene Gesundheit. Das Speichern aller Vorlagen auf der Stammebene eines einzelnen Verzeichnisses wird unordentlich.

Wenn APP_DIRS True ist, suchen DjangoTemplates-Module nach Vorlagen im Template-Unterverzeichnis der installierten Anwendungen. Dieser generische Name wurde aus Gründen der Abwärtskompatibilität beibehalten.

Verwandte Themen