/ / Django Templates Lookup-Reihenfolge - Django, Vorlagen, Pfad, Django-Floppyforms

Django Vorlagen Suchreihenfolge - Django, Vorlagen, Pfad, Django-Floppyforms

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 № 1

Aktualisierte 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 der OPTIONS. Wenn dies definiert ist, erfordert dies APP_DIRS ist nicht gesetzt und folgt dort einer expliziten Reihenfolge.

  • Wenn keine Lader und falls vorhanden DIRS definiert, haben diese Priorität als filesystem Lader.

  • Wenn keine Lader, und APP_DIRS definiert ist, haben diese zweite Priorität Vorrang vor DIRS.

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