Django: Wie verwende ich App-Templatetags von Drittanbietern mit Jinja 2?

9

Ich probiere Jinja2 für meine Django-Website.

Nun, da Jinja2 nicht offiziell django templating engine ist und es ablehnt, die Template-Tags zu erkennen / zu laden, die ich vor jinja2 verwendet habe.

Nun, auch wenn es eine Änderung bei der Erstellung der Schablonen-Tags geben muss, wie ist es dann möglich, über die Apps von Drittanbietern nachzudenken?

In diesem Fall scheint es unmöglich, Jinja2 zu verwenden, da das System nach jinja2 funktionieren muss.

[Ich verwende auch coffin als Adapter für Jinja-Django]

Jede Hilfe ist willkommen!

    
Yugal Jindle 08.06.2012, 13:01
quelle

3 Antworten

1

Laut Sarg-Dokumenten müssen Sie alle benutzerdefinierten Django-Vorlagen-Tags als benutzerdefinierte Jinja2-Erweiterungen neu schreiben.

Sie können die jinja2-Makros auch verwenden, um die Schablonen-Tags von Django zu emulieren. Der wichtigste Unterschied besteht darin, dass für Jinja2-Makros alle Kontextdaten über den Vorlagenkontext bereitgestellt werden müssen, während in Django-Tags auf andere Weise auf Daten zugegriffen werden kann (z. B. Laden aus der Datenbank oder Aufrufen anderer Python-Bibliotheken). p>

Ich habe Jinja2-Vorlagen eine Zeitlang verwendet und musste nie ein benutzerdefiniertes Vorlagen-Tag erstellen.

Es ist möglich, django Templates in einer App auf der Website und jinja2 in einer anderen App zu verwenden, es ist kein Problem, aber es ist nicht ohne weiteres möglich, jinja2 Templates aus django Templates zu importieren oder zu erweitern und umgekehrt.

>     
Evgeny 11.06.2012, 22:54
quelle
0

Das kannst du mit Sarg machen. Coffin bietet eine Möglichkeit, Django-Stil-Tags für die Verwendung in jinja2-Vorlagen zu registrieren:

%Vor%     
spuriousdata 11.06.2012 11:50
quelle
0

Die Struktur von Django erlaubt keinen Austausch der Template-Engine, da sie ein Kernbestandteil des Systems ist. Auch wenn Sie coffin verwenden können, ist dies keine unterstützte Konfiguration, und von keinem Drittanbietermodul wird erwartet, dass es dies unterstützt. Es wäre das gleiche wie wenn man Module von Drittanbietern bittet, sqlalchemy zu unterstützen, weil du einen Weg gefunden hast, Django damit arbeiten zu lassen.

Wenn Sie jinja2 verwenden möchten, verwenden Sie ein Framework, das mit einer Pluggable-Vorlagen-Engine entworfen wurde - oder einer, die ohne Template-Engine ausgeliefert wird.

Die Integrationsseite listet Out-of-the-Box-Integrationen auf, die mit Jinja2 geliefert werden. Auf dieser Seite können Sie sehen, dass Pyramid unterstützt wird - und das, weil die by design -Pyramide Pluggable-Komponenten ermöglicht.

Flask (von den gleichen Leuten hinter Jinja2 erstellt) hat native Unterstützung für Jinja2.

    
Burhan Khalid 11.06.2012 06:37
quelle