Ich schreibe eine App, die benutzt django-floppyforms
. Außerdem bietet meine App die Standardeinstellung twitter bootstrap
skin, also habe ich floppyforms templates in meiner app angepasst, um sie gleich bootstrap zu machen. Ich legte floppyforms/{layouts, rows}/bootstrap
in das Vorlagenverzeichnis meiner App. Aber es funktioniert nicht: django verwendet sie nicht. Also möchte ich den Endbenutzer nicht dazu zwingen, angepasste Vorlagen in sein Projekt zu übernehmen. Ich möchte Django sogar darauf hinweisen, dass er meinen lokalen Nutzer mitnimmt floppyforms
Vorlagen beim Rendern von In-App-Inhalten. Ich möchte nur meine App eigenständig ohne irgendwelche unhandlichen Abhängigkeiten machen.
Jetzt habe ich ähnliche Probleme mit Django-Admintools-Bootstrap und Django 1.5.1
. Es wurde vorher hinzugefügt admin_tools
im INSTALLED_APPS
, aber es gibt keinen Effekt. Auch wird es nicht statisch sammeln für django-admintools-bootstrap
. In anderen ähnlichen Projekten mit diesen beiden Paketen und Django 1.4 funktioniert alles gut. Außerdem habe ich die Veröffentlichungshinweise für Django 1.5 nach Änderungen der Template-Lookup-Reihenfolge überprüft und nichts gefunden.
Antworten:
7 für die Antwort № 1Aktualisierte Antwort:
Ab Django 1.8, TEMPLATE_DIRS
und TEMPLATE_LOADERS
sind veraltet und ersetzt durch TEMPLATES
.
Ein Beispiel für TEMPLATES
kann sein:
TEMPLATES = [
{
"BACKEND": "django.template.backends.django.DjangoTemplates",
"DIRS": [
os.path.join(BASE_DIR, "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",
],
# "loaders": [
# "django.template.loaders.filesystem.Loader",
# "django.template.loaders.app_directories.Loader",
# ],
"debug": True,
},
},
]
Die Reihenfolge der Template-Suche hängt von folgenden Faktoren ab:
Der wichtigste Ort ist der
loaders
Option derOPTIONS
. Wenn dies definiert ist, erfordert diesAPP_DIRS
ist nicht gesetzt und folgt dort einer expliziten Reihenfolge.Wenn keine Lader und falls vorhanden
DIRS
definiert, haben diese Priorität alsfilesystem
Lader.Wenn keine Lader, und
APP_DIRS
definiert ist, haben diese zweite Priorität Vorrang vorDIRS
.
Die oben genannten sind nicht explizit dokumentiert, können aber leicht durch die vorhandene Dokumentation und vielleicht nach einigen Experimenten abgezogen werden.
3 für die Antwort № 2
Wenn sie sich nicht im Apps-Vorlagenverzeichnis befinden, fügen Sie den absoluten Pfad Ihrer Vorlagenverzeichnisse hinzu TEMPLATE_DIRS
die Einstellungen. Diese Verzeichnisse werden der Reihe nach durchsucht, also fügen Sie sie vor.
Wenn sie sich im Apps-Verzeichnis befinden, möchtest du vielleicht etwas hinzufügen "django.template.loaders.app_directories.Loader"
vor jedem in TEMPLATE_LOADERS
Rahmen.
Überprüfen Sie außerdem, wie Sie Vorlagennamen verwenden, während Sie Vorlagen angeben. Sie sollten als verwenden "floppyforms/layouts/bootstrap/template1.html"
.
Weitere Informationen unter Vorlagenlader