2011-05-12 13 views
7

De la documentación de Django,¿Default_if_none no tiene ningún uso en las plantillas de Django?

Generalmente, si una variable no existe , el sistema de plantillas inserta el valor del ajuste TEMPLATE_STRING_IF_INVALID, que se establece en '' (la cadena vacía) por defecto.

filtros que se aplican a una variable de no válida solo se aplicarán si TEMPLATE_STRING_IF_INVALID se establece en '' (la cadena vacía). Si TEMPLATE_STRING_IF_INVALID está configurado en cualquier otro valor, los filtros variables se ignorarán .

Este comportamiento es ligeramente diferente para las etiquetas if, for y reagrupar plantilla. Si una variable no válida es proporcionada a una de estas etiquetas de plantilla , la variable se interpretará como Ninguna. Los filtros siempre se aplican a las variables inválidas dentro de estas etiquetas de plantilla .

Si una variable no válida siempre se traduce a '', de etiquetas de plantilla y filtros que no sea si, para y reagruparse, a continuación, lo que hace buena filtro de la plantilla default_if_none? ¿Obsoleto?

Respuesta

11

Hay una diferencia entre una variable no válida y otra que existe pero que tiene un valor de None.

Considere el siguiente contexto:

{'apple':'green','banana':None}` 

En su plantilla {{ apple }} resuelve a green, mientras {{ banana }} resuelve a None, y {{ orange }} resuelve a TEMPLATE_STRING_IF_INVALID.

Considere ahora {{ banana|default_if_none:'yellow' }} y debería ver el uso de la etiqueta default_if_none.

3

Aquí hay un caso en el que he usado default_if_none varias veces. Estoy consultando una base de datos secundaria en la que no tengo control y estoy mostrando los datos en la plantilla. La mayoría de las veces, los datos se ven bien, pero a veces, el valor de los datos mostrará None. En ese caso, voy a utilizar el filtro como:

{{ data_value|default_if_none:"N/A" }} 

El público en general y los usuarios del sitio no suele entender lo que significa el valor None, reemplazándolo con una palabra más amable, el filtro viene en default_if_none práctico.

+0

Tenga cuidado cuando desee unir más de un filtro. Por ejemplo: 'value | upper | default_if_none:" - "' not work, debes poner: 'value | default_if_none:" - "| upper' – Virako

Cuestiones relacionadas