Variable de plantilla Jinja2 si ningún objeto establece un valor predeterminado

Resuelto mcd asked hace 11 años • 13 respuestas

¿Cómo hacer que una variable en Jijna2 tenga el valor predeterminado "" si el objeto está Noneen lugar de hacer algo como esto?

{% if p %}   
    {{ p.User['first_name']}}
{% else %}
    NONE
{%endif %}

Entonces, si el objeto pes None. Quiero que los valores predeterminados de p(first_name y last_name) sean "". Básicamente:

nvl(p.User[first_name'], "")

Error al recibir:

Error: jinja2.exceptions.UndefinidoError
UndefinidoError: 'Ninguno' no tiene el atributo 'Usuario'

mcd avatar Oct 27 '13 09:10 mcd
Aceptado

Utilice la noneprueba (¡no debe confundirse con Noneel objeto de Python !):

{% if p is not none %}   
    {{ p.User['first_name'] }}
{% else %}
    NONE
{% endif %}

o:

{{ p.User['first_name'] if p is not none else 'NONE' }}

o si necesitas una cadena vacía:

{{ p.User['first_name'] if p is not none }}
tbicr avatar Oct 27 '2013 08:10 tbicr
{{p.User['first_name'] or 'My default string'}}
Torindo avatar Jun 24 '2014 11:06 Torindo

Según los documentos , puedes hacer:

{{ p|d('', true) }}

Causa Noneconversiones Falseen un contexto booleano.

mitenka avatar Mar 23 '2015 19:03 mitenka