2012-06-01 36 views
20

Soy nuevo con django. Estoy atascado con el problema de comparar cadenas en la plantilla.Plantilla de Django que compara la cadena

Tengo el uso de la etiqueta ifnotequal para comparar la cadena. Pero no está funcionando.

que tiene Tratar de salida de la variable:

{{ request.user.username }} 
{{ article.creator }} 

Aquí comparo:

{% ifnotequal request.user.username article.creator %} 
    {# output something #} 
{% endifnotequal %} 

Pero cuando lo haga la hardcode: funciona.

{% ifnotequal "justin" "mckoy" %} 
    {# output something #} 
{% endifnotequal %} 

¿cuál es el problema? El article.creator proviene de la base de datos y el user.username es de la solicitud.

¿Alguien me puede ayudar con este problema?

+0

'article.creator' es una cadena demasiado? ¿Se puede publicar el modelo? – yprez

+0

Además, en su ejemplo, es 'request.user.usname' no' request.user.username'. ¿Error de tipografía? – yprez

+0

@Yuri - error de tipeo en mi ejemplo ... – justin

Respuesta

13

article.creator es un User y request.user.username es una cadena. Intente comparar request.user en su lugar.

+3

Cuando dos cosas no son iguales en las plantillas de Django, a menudo son los tipos de las variables. Sucede varias veces que traté de comparar 1 y "1". –

+0

@Simeon - gracias, eso funciona ... :) – justin

+0

también funcionará si 'article.creator.nombredeusuario' se compara con' request.user.username' – justin

35

Prueba esto:

{% ifnotequal article.creator|stringformat:"s" request.user.username %} 
+4

¡Esta respuesta necesita más votos! Estaba golpeando mi cabeza contra la pared! – pete

+0

Imprime como una cadena, pero no es una cadena; también es válido para los UUID. – jsbueno

+0

Gracias por esto, estaba tratando de filtrar una variable que estaba rodeada por una gran cantidad de espacios en blanco y esta fue la solución – Bwyss

18

Por comparación de cadenas en la plantilla de utilizar

{% if name == "someone" %} 
    ............ 
    ............ 
{% endif %} 

y por no igual

{% if name != "someone" %} 
    ............ 
    ............ 
{% endif %} 
Cuestiones relacionadas