2012-09-27 30 views
8

Dado que tengo dos variables {{ profile }} con un valor "prueba" y {{ element.author }} nuevamente con el valor "prueba". En jinja2 cuando trato de compararlos usando un if, no aparece nada. Hago la comparación de la siguiente manera:compare dos variables en la plantilla jinja2

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

me sale la salida test and test are not same ¿Cuál es incorrecto, ¿cómo puedo comparar?

+0

Intenta introducir un valor de: {{[perfil, elemento.autor]}} – defuz

+0

Publicado accidentalmente. Esta expresión debe tomar representación de variables. – defuz

Respuesta

2

profile y element.author no son del mismo tipo, o de lo contrario no son iguales. Sin embargo, sí producen el mismo valor cuando se convierten a una cadena. Necesita compararlos correctamente o cambiar sus tipos para que sean los mismos.

+1

Solo quería hacer algunas comparaciones de cadenas, ¿cómo hacer eso? – user1629366

+0

Quizás: 'str (profile) == str (element.author)'? Sin saber todos los tipos y otras cosas sobre sus datos y código, no puedo decirlo. – mjibson

1

Puede verificar los tipos de las variables usando uno de los muchos built in tests que tiene disponible jinja2. Por ejemplo, string() o number(). Tuve el mismo problema y me di cuenta de que eran los tipos.

8

Tengo el mismo problema, dos variables que tienen un valor entero no son iguales cuando tienen el mismo valor.

¿Hay alguna manera de que esto funcione de alguna manera? También se intentó usar str() == str() o int() == int() pero siempre hay un error indefinido.

ACTUALIZACIÓN

encontrado Solución: Basta con utilizar filtros como {{ var|string() }} o {{ var|int() }} https://stackoverflow.com/a/19993378/1232796

lectura del documento se puede encontrar aquí http://jinja.pocoo.org/docs/dev/templates/#list-of-builtin-filters

En el caso que usted quiere hacer

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