2016-09-02 42 views
6

Używam Jinja2 w kolbie. Chcę renderować szablon z łańcucha. Próbowałem 2 następujących metod:Szablon ładowania jinja2 z ciągu znaków: TypeError: brak programu ładującego dla tego środowiska określonego

rtemplate = jinja2.Environment().from_string(myString) 
data = rtemplate.render(**data) 

i

rtemplate = jinja2.Template(myString) 
data = rtemplate.render(**data) 

Jednak obie metody powrotu:

TypeError: no loader for this environment specified 

Sprawdziłem instrukcji i URL: https://gist.github.com/wrunk/1317933

jednak nigdzie nie jest określone, aby wybrać moduł ładujący podczas używania ciągu znaków.

Odpowiedz

11

Możesz podać loader w Environment z that list

from jinja2 import Environment, BaseLoader 

rtemplate = Environment(loader=BaseLoader).from_string(myString) 
data = rtemplate.render(**data) 

Edytuj: Problem był z myString, ma {% include 'test.html' %} i Jinja2 ma pojęcia, skąd wziąć szablon z.

UPDATE

Jako @ iver56 uprzejmie zauważyć, że lepiej:

rtemplate = Environment(loader=BaseLoader()).from_string(myString) 
+0

Gdy próbuje to pojawia się błąd: AttributeError: obiekt 'środowisko' nie ma atrybutu 'get_source' – user3605780

+0

@ user3605780 nieznacznie edytowałem kod, ale nic to nie zmienia i działa na moim komputerze. Jakiej wersji 'jinja2' używasz? –

+0

Otrzymuję ten sam błąd, używałem wersji 2.7.3, właśnie zaktualizowałem do wersji 2.8 i tam dostaję błąd: TypeError: get_source() brakuje 1 wymaganego argumentu pozycyjnego: 'template' – user3605780