JSON est apparaissant comme de l'unicode des entités dans Jinja2 modèle
Je l'aide Jinja2 avec webapp2.
Jinja2 code pour tous "contexte" des données dans unicode comme leur doc a dit. Cela s'avère problématique lorsque j'essaie d'insérer une chaîne json dans le modèle:
jsonData = json.loads(get_the_file('catsJson.txt'))
Je passe jsonData de modèle et je suis en mesure de boucle avec succès, mais lorsque j'insère un json élément en HTML, il ressemble à ceci:
<option value='[u'dogs', u'cats']'>
Je veux qu'elle ressemble à ceci (comme dans l'original de la chaîne json):
<option value='["dogs", "cats"]'>
Des suggestions?
OriginalL'auteur ofko | 2012-01-03
Vous devez vous connecter pour publier un commentaire.
Vous devez filtrer la valeur par le biais du
safe
filtre à dire jinja2 qu'il ne devrait pas s'appliquer à tous les autres filtres la sortie. Dans jinja2 syntaxe:Noter que, puisque vous appelez
json.loads
vous avez réellement n'avez pas de données json en plus, vous avez une liste python objet. Ainsi, lorsqu'il est sérialisé c'est la même chose que l'appel à launicode(['dogs', 'cats'])
qui va vous donner votreu
préfixe. Vous pourriez ne pas vouloir réellement analyser les données json, ou vous aurez besoin de tourner la liste dans une chaîne manuellement au lieu d'avoir jinja2 le faire pour vous.[u'dogs', u'cats']
Comment puis-je supprimer le préfixe u?Convertir les éléments d'un tableau à
str
:map(str, jsonData)
réponse de mise à jour, vous êtes laissant jinja2 tour une liste python dans une chaîne, de sorte qu'il finit à l'aide de la représentation de chaîne d'une liste.
Vous pouvez vous en sortir avec quelques python dans jinja2, mais pas beaucoup. En supposant que
item
est une liste, vous pourriez faire{{ ', '.join(item) }}
. Les 2 autres options pour parcourir la liste à l'aide d'un jinja2joiner
objet, ou pour convertir les listes de chaînes à partir de l'intérieur de python et d'exposer les nouvelles "restituable" objet à votre modèle.pour l'instant, je vais juste faire
','.join(item)
et ensuite les partager afin de recréer la liste en jQuery. Merci.OriginalL'auteur Michael Merickel
À Jinja 2.9 j'ai suivi @Xion conseils de convertir d'abord l'objet iterable éléments à l'aide de la chaîne
map('string')
. La carte de filtrer les résultats j'ai ensuite converti à une liste qui est enfin sortie de JSON à l'aide de latojson
de filtre intégré.OriginalL'auteur M. F.
Si vous n'avez pas besoin d'agir sur le tableau dans le Jinja côté, mais il suffit de passer le paquet à javascript, je vous conseille d'utiliser:
https://docs.python.org/2/library/json.html
Ce stringified variable, lorsqu'il est passé dans jinja est transmis vers le bas pour javascript sans avoir de l'pythonic unicode marques sur les variables. Et d'ailleurs, sera probablement de résoudre
True
etFalse
se fixe àtrue
etfalse
que javascript pourrait s'attendre.Dans le contexte de la fiole, il ressemblerait à quelque chose comme ceci:
home.html
OriginalL'auteur phyatt