2010-03-17 19 views
12

Sto cercando di rendere un modello django da un database esterno alla normale struttura richiesta-risposta di djangos. Ma sembra non banale, a causa del modo in cui i modelli di django sono compilati. Voglio fare qualcosa di simile a questo:Carica modello django dal database

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

Come si fa?

+0

mi chiedo solo come si sarà aggiornando i modelli? Romperai la struttura del modello django MVC/T – gath

risposta

30

Non c'è niente di complicato in questo, e non ha nulla a che fare con la struttura richiesta/risposta. Tutto quello che dovete fare è passare la stringa modello nel django.template.Template costruttore (a proposito, ho cambiato il nome del modello, per evitare confusione):

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

seconda riga dovrebbe leggere "tpl = Template (s)" –

+0

@Brian grazie, cambiato. –

+0

Perfetto grazie. –

9

V'è un applicazione riutilizzabile che carica i modelli dal database :

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

+0

Sembra che sia stato abbandonato, purtroppo .. L'ultima versione in PyPI è del 2012. – user1496984

+0

@ user1496984 - Ma oltre su [GitHub] (https://github.com/jazzband/django-dbtemplates) è stato aggiornato 6 mesi fa. – Tony

Problemi correlati