2012-09-27 16 views
8

Dato che ho due variabili {{ profile }} con un valore "test" e {{ element.author }} di nuovo con il valore "test". In jinja2 quando provo a confrontarli usando un if, non compare nulla. Faccio il paragone come segue:confrontare due variabili nel modello jinja2

{% if profile == element.author %} 
{{ profile }} and {{ element.author }} are same 
{% else %} 
{{ profile }} and {{ element.author }} are **not** same 
{% endif %} 

ottengo l'uscita test and test are not same Che cosa è sbagliato, come posso confrontare?

+0

Prova a immettere un valore di: {{[profilo, elemento.autore]}} – defuz

+0

Registrato per sbaglio. Questa espressione dovrebbe prendere la rappresentazione delle variabili. – defuz

risposta

2

profile e element.author non sono dello stesso tipo o non sono uguali. Tuttavia, accadono di produrre lo stesso valore quando convertiti in una stringa. Devi confrontarli correttamente o cambiare i loro tipi per essere uguali.

+1

Volevo solo fare un confronto di stringhe, come farlo? – user1629366

+0

Forse: 'str (profilo) == str (element.author)'? Senza conoscere tutti i tipi e le altre cose sui dati e sul codice, non posso dire. – mjibson

1

È possibile controllare i tipi di variabili utilizzando uno dei molti built in tests che jinja2 è disponibile. Ad esempio string() o number(). Ho avuto lo stesso problema e ho capito che erano i tipi.

8

Ho lo stesso problema, due variabili con un valore intero non sono uguali quando hanno lo stesso valore.

C'è un modo per rendere questo lavoro in alcun modo. Anche provato a usare str() == str() o int() == int() ma c'è sempre un errore indefinito.

UPDATE

Trovato Soluzione: semplicemente utilizzare filtri quali {{ var|string() }} o {{ var|int() }} https://stackoverflow.com/a/19993378/1232796

Lettura del documento può essere trovato qui http://jinja.pocoo.org/docs/dev/templates/#list-of-builtin-filters

Nel tuo caso si vorrebbe fare

{% if profile|string() == element.author|string() %} 
{{ profile }} and {{ element.author }} are same 
{% else %} 
{{ profile }} and {{ element.author }} are **not** same 
{% endif %}