web-dev-qa-db-fra.com

modèle de chargement jinja2 à partir de la chaîne: TypeError: aucun chargeur spécifié pour cet environnement

J'utilise Jinja2 dans Flask. Je veux rendre un modèle à partir d'une chaîne. J'ai essayé les 2 méthodes suivantes:

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

et

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

Cependant, les deux méthodes renvoient:

TypeError: no loader for this environment specified

J'ai vérifié le manuel et cette URL: https://Gist.github.com/wrunk/13179

Cependant, nulle part n'est spécifié pour sélectionner un chargeur lors de l'utilisation d'une chaîne.

16
user3605780

Vous pouvez fournir loader dans Environment à partir de cette liste

from jinja2 import Environment, BaseLoader

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

Edit : Le problème était avec myString, il a {% include 'test.html' %} et Jinja2 n'a aucune idée d'où obtenir le modèle.

[~ # ~] mise à jour [~ # ~]

Comme l'a gentiment noté @ iver56, il vaut mieux:

rtemplate = Environment(loader=BaseLoader()).from_string(myString)
35
vishes_shell