Seite 1 von 1

Kann man Django-Templates mit Jinja2 ersetzen?

Verfasst: Mittwoch 10. Juni 2009, 23:19
von TDO
Hi,

die Frage steht oben... ja ich weiss klar kann man es ersetzen aber mir geht es darum ob dann z.b. das Admin-UI nicht mehr geht oder ob es sonst irgendwo Sachen gibt die nicht mehr gehen... von der Syntax aehneln die sich ja schon sehr...

Verfasst: Donnerstag 11. Juni 2009, 08:32
von Leonidas
Nein, ist kein Problem. Die Django-UI ebenso wie die Generic Views etc. nutzen dann weiterhin die Django-Templates.

Ich für meinen Teil habe mir einfach die Template-Shortcuts von Django nachimplementiert, so dass ``render_to_response()`` & Co. Jinja-Templates rendern. Ebenso die Generic Views, die bei mir auf Jinja portiert worden sind ohne negative Konsequenzen für das Admin-UI etc.

Verfasst: Donnerstag 11. Juni 2009, 13:02
von fred.reichbier
Vielleicht ist djanjinja auch was für dich.

Verfasst: Donnerstag 11. Juni 2009, 13:11
von sma
http://dbanck.de/2009/01/13/using-jinja2-with-django/ ist der erste Link, der mir bei Google ins Auge gestochen ist.

Jinja auch für's Admin UI benutzen zu wollen, könnte allerdings einige Modifikationen erfordern. Dort wirst wohl meist `django.shortcuts.render_to_response()` benutzt, welches `django.template.loader.render_to_string()` benutzt. Das wiederum nutzt `django.template.loader.find_template_source()`, welches die `settings.TEMPLATE_LOADERS` durchsucht, die ein Template-Objekt liefern oder `TemplateDoesNotExist` werden sollten. Hier könnte man vielleicht mit einem passenden Loader ein Jinja-Template zurückliefern. Allerdings müsste dieses mit einem `django.template.context.Context` klarkommen und da hätte ich so meine Zweifel, dass das klappen könnte. Ich glaube daher nicht, dass es ein "drop in replacement" ist.

Stefan

Verfasst: Donnerstag 11. Juni 2009, 15:33
von Leonidas
Die Django-Templates komplett zu ersetzen halte ich auch schon deswegen nicht für übermäßig sinnvoll, da eben der Admin das nutzt und Jinja nun auch nicht so sehr kompatibel ist. Darüber hinaus nutzt so ziemlich jede Django-App auch die Django-Templates und man wäre da nur noch am Code-portieren.