2010-12-23 18 views
4

Dies ist die Struktur meiner Website:einer anderen App-Vorlagen in Django Get

mysite 
    app_a 
     templates 
      a.html 
    app_b 
     templates 
      b.html 
     views.py 

In views.py möchte ich a.html bekommen,

So verwende ich dies:

return render_to_response('app_a/a.html') 

aber Es zeigt einen Fehler an:

TemplateDoesNotExist 

Was muss ich tun?

Antwort

6

nur render_to_response verwenden ('a.html')

Angenommen, Sie den Standard-App-Verzeichnis Vorlage Lader auf haben, ist das Problem, dass die Vorlage Pfad tatsächlich ist a.html

So im aktuellen Format , würden Sie a.html nicht app_a/a.html

Das empfohlene Format für Template-Verzeichnisse ist

schreiben

die funktionieren würde, mit Ihrem Beispiel app_a/a.html

Der Grund, dieses Format wird empfohlen, so können Sie sanely Vorlagen auf einer Basis pro-App außer Kraft setzen.

Sie können problemlos in Konflikt stehende Vorlagennamen erhalten, wenn alle Dateien direkt im App-Vorlagenverzeichnis liegen.

1

Sie können eine TEMPLATE_DIRS-Variable in settings.py angeben, einem Tupel von Verzeichnissen, in denen Vorlagen gesucht werden. Wenn Sie das Vorlagenverzeichnis von beiden Apps zu TEMPLATE_DIRS hinzufügen, sollten Sie in Ordnung sein (achten Sie nur auf Konflikte im Suchpfad).

+0

Siehe zum Beispiel meines templates/Verzeichnis ist auf der obersten Ebene (das heißt zwischen allen Anwendungen gemeinsam). In settings.py gebe ich den Speicherort der Templates wie folgt an: TEMPLATE_DIRS = (os.path.join (os.path.dirname (__ file__), 'templates'), ... ... wenn ich weitere Vorlagenverzeichnisse hinzufügen möchte Im Suchpfad würde ich nach dem Komma zusätzliche Pfade anhängen. Hoffe das hilft! –

+0

Siehe auch: http://www.djangofoo.com/tag/template_dirs –

1

Neben den TEMPLATE_DIRS Einstellungen, versuchen django.template.loaders.app_directories.Loader zum TEMPLATE_LOADERS Einstellung hinzugefügt, da dies alle machen Verfügung, um die Vorlagen für die Apps in Ihrem INSTALLED_APPS. Auf diese Weise müssen Sie sie nicht alle unter einem Hauptverzeichnis ablegen.

die Django Documentation for template loaders

Verwandte Themen