Django Aufnahme-tag mit konfigurierbaren Vorlage
Habe ich eine Aufnahme-tag, aber ich möchte in der Lage sein, um die Vorlage Optional konfigurierbar. Es scheint keine Unterstützung für das out of the box, so würde ich mag, um zu sehen, wie Menschen getan hat - vielleicht eine Methode, suchen Sie die Vorlagen-Verzeichnis erste, die für eine spezifische Vorlage einen Namen und dann fallen wieder auf die Standard-Vorlage.
@register.inclusion_tag('foo.html', takes_context=True)
- Was sind Sie versuchen zu erreichen, dass
{% include my_template %}
nicht kann? - Ich muss hinzufügen, dass einige Variablen im Zusammenhang mit einem benutzerdefinierten tag. Sieht aus wie ich haben werde, zu schreiben, der tag-der lange Weg. Danke.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Den
inclusion_tag
decorator ist nur eine Verknüpfung - es ist gemeint als eine einfache Art und Weise der Erbringung einen spezifischen Vorlage mit einem bestimmten Kontext. Sobald Sie verschieben möchten, die außerhalb der, dass, es kann nicht mehr helfen. Aber das bedeutet nur, Sie müssen schreiben Sie den tag, der lange Weg, wie erklärt in der Dokumentation, und geben Sie die gewünschte Vorlage als parameter.Benutze ich simple_tag, wenn ich Sie brauche, das zu tun:
Diesem post, mein Leben zu retten: http://djangosnippets.org/snippets/1329/
Die Taste hinzufügen, um die "dummy " Vorlage":
@register.inclusion_tag
nehmen könnenTemplate
Instanz (neben einem Pfad), also könnte man etwas tun, wiedummy = Template("""{% extends template %}""")
, dann@register.inclusion_tag(dummy, takes_context=True)
. ``Ich musste etwas tun, wie dies für ein Projekt und da brauchten wir mehr als einen von dieser Art der Inklusion tag machte ich einen Dekorator basiert auf django inclusion_tag Dekorateur. Dies ist der code:
Sie sind zur Rückgabe eines Tupels mit der Vorlage (oder die Vorlage, Liste) und der Kontext, in dict. Beachten Sie, dass Sie zu Durchlaufen haben, das register (Library-Instanz) in der Dekorator-Aufruf:
Hoffe, das hilft
Eine Lösung könnte sein, eine regelmäßige
inclusion_tag
die pass-dynamic-template Namen zucontext
.Wie diese :
Werden und die Vorlage:
Tricks hier ist, wenn ich Anrufe
{% tag_manager %}
enthält esinclude_tag.html
was wiederum beinhaltet die Vorlage zurückgegebenresolve_template()
(nicht im Lieferumfang enthalten aus Platzgründen).Hoffe, das hilft...