2011-08-22 7 views
8

Digamos que tengo el código en la plantilla de esta manera:enlace de plantillas de Django con si else

<a href="#"> 
    {% if request.user.first_name or request.user.last_name %} 
     {{ request.user.first_name }} {{ request.user.last_name }} 
    {% else %} 
     {{ request.user }} 
    {% endif %} 
</a> 

problema con este código es que añade espacio de brazo oscilante longitudinal, de modo de enlace parece enlace _ subrayada al final.

¿Cómo elimino esos espacios finales? La etiqueta {% spaceless %} no ayuda mucho aquí porque solo elimina espacios entre etiquetas.

Respuesta

8

De hecho, encontré una solución simple para mi problema.

<a href="#">{% spaceless %} 
    {% if request.user.first_name or request.user.last_name %} 
     {{ request.user.first_name }} {{ request.user.last_name }} 
    {% else %} 
     {{ request.user }} 
    {% endif %} 
{% endspaceless %}</a> 

Al colocar la etiqueta sin espacio en su interior se quita la cuerda que se pone. La colocación fuera

0

Solución rápida: utilice los comentarios html para "escapar" el espacio en blanco innecesario. Probablemente la mejor solución: cree una etiqueta de plantilla que contenga este condicional.

0

secundar el uso de una sola etiqueta de plantilla - es d ser bueno (y bastante fácil) para eliminar esta lógica de la plantilla.

Aunque, ¿acaso el simple uso de {{ request.user }} no da exactamente el mismo resultado que lo que está haciendo aquí?

+0

En Django 1.3 '__unicode__' método de retornos modelo de usuario self.username –

+0

@marltu - bastante seguro de que siempre ha sido así. –

0

En lugar de if-else bloque de tratar de usar la versión más corta:

{{ user.get_full_name|default:user.get_username }} 
Cuestiones relacionadas