4 votes

Comment passer null à javascript depuis python en utilisant jinja

Je faisais quelque chose comme ça dans le moteur d'application de Google :

self.render('hello.html', value=null)

Mais évidemment, comme Python ne comprend pas null, il pense qu'il s'agit d'une variable non définie et donne une erreur.

Si je l'envoie sous forme de chaîne (value="null"), javascript ne sait pas que je veux dire null et non pas une chaîne "null".

Comment contourner ce problème ?

Et si c'est un peu pertinent, j'essaie de passer la valeur null à un diagramme de dispersion google en javascript.

8voto

cnelson Points 1255

Je suppose que vous faites quelque chose comme.. :

self.render('hello.html', value=[0.1, None, None, 0.5])

et que le moteur de gabarit le convertisse en chaîne de caractères, ce qui permet d'obtenir :

 [0.1, None, None, 0.5]

Si c'est le cas, il faut que python le convertisse en javascript avant de le passer à jinja :

import json
self.render('hello.html', value=json.dumps([0.1, None, None, 0.5]))

Cela vous donnera

[0.1, null, null, 0.5]

et c'est ce que je pense que vous recherchez.

Une solution encore meilleure serait d'ajouter un filtre personnalisé pour jinja pour gérer l'échappement du javascript. Cela ressemblerait à quelque chose comme :

import json
def jsonfilter(value):
    return json.dumps(value)

environment.filters['json'] = jsonfilter

Ensuite, dans votre modèle, vous pouvez simplement faire

{{value|json}}

3voto

lecstor Points 1416

En supposant que votre modèle ressemble à quelque chose comme :

plotdata = [0.1, {{value}}, null, 0.5]

(en fonction du moteur de template que vous utilisez), puis :

self.render('hello.html', { "value": "null" })

devrait aboutir à la production du modèle rendu :

plotdata = [0.1, null, null, 0.5]

Si cela ne fonctionne pas, veuillez nous indiquer le moteur de template que vous utilisez, les valeurs que vous avez essayé d'envoyer, et le résultat exact du rendu

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X