2010-03-17 11 views
12

Ich versuche, eine Django-Vorlage aus einer Datenbank außerhalb von Djangos normalen Anfrage-Antwort-Struktur zu rendern. Aufgrund der Art und Weise, wie Django-Templates kompiliert werden, scheint es jedoch nicht trivial zu sein. Ich möchte so etwas tun:Load django Vorlage aus der Datenbank

>>> s = Template.objects.get(pk = 123).content 
>>> some_method_to_render(s, {'a' : 123, 'b' : 456}) 
>>> ... the rendered output here ... 

Wie machst du das?

+0

ich frage mich nur, wie Sie Ihre Vorlagen Aktualisierung wird? Sie werden den MVC/T-Django-Modell-Framework brechen – gath

Antwort

30

Es gibt nichts Kompliziertes, und es hat nichts mit der Anfrage/Antwort-Struktur zu tun. Alles, was Sie tun müssen, ist die Vorlage Zeichenfolge in den django.template.Template Konstruktor übergeben (BTW, ich den Namen des Modells geändert haben, um Verwirrung zu vermeiden):

from django.template import Context, Template 
from myapp.models import DbTemplate 

s = DbTemplate.objects.get(pk=123).content 
tpl = Template(s) 
tpl.render(Context(dict(a=123, b=456))) 
+0

2. Zeile sollte lesen "tpl = Vorlage (n)" –

+0

@Brian danke, geändert. –

+0

Perfekt danke. –

9

Es ist eine wiederverwendbare app, die Vorlagen aus der Datenbank geladen :

http://django-dbtemplates.readthedocs.org/en/latest/

+0

Scheint so, als wäre es verlassen, leider .. Letzte Version in PyPI ist von 2012. – user1496984

+0

@ user1496984 - Aber drüben auf [GitHub] (https://github.com/jazzband/django-dbtemplates) wurde vor 6 Monaten aktualisiert. – Tony

Verwandte Themen