plantillas para examples descargar bootstrap django django-templates

para - ¿Cómo comprobar si la variable de plantilla django está definida?



django templates examples (2)

Tengo una plantilla de django que se utiliza desde muchas vistas. La plantilla tiene un bloque para los mensajes que se usan para notificar al usuario cualquier cosa que deba llamar su atención. Si un mensaje es enviado o no depende de las vistas. Algunas vistas pueden enviar una variable de message a la plantilla, mientras que otras no.

view_1: message = "This is an important message" render_to_response("my_template.html", {''message'':message, ''foo'':foo, ''bar'':bar}, context_instance = RequestContext(request)) view_2: message = "This is an important message" render_to_response("my_template.html", {''foo'':foo, ''bar'':bar}, context_instance = RequestContext(request))

En la plantilla, compruebo la variable del message e incluyo el bloque de la siguiente manera:

base_template.html: .... {% block main_body %} {% block messages %} {% endblock %} {% block content %} {% endblock %} {% endblock %} .... my_template.html: {% extends base_template.html %} .... {% if message %} {% block messages %} <div class=''imp_msg''>{{ message }} </div> {% endblock %} {% endif %} ...

El problema es que incluso si view_2 no pasa un mensaje, el html final se representa con <div class=''imp_msg''></div> - básicamente un div vacío.

Dado que el CSS está diseñado para dar un fondo light_red a los mensajes, lo que veo es una barra vacía light_red en la parte superior de la página.

También probé: {% ifnotequal message None %} , {% ifnotequal message '''' %} , intenté configurar el message como None o '''' explícitamente, pero no parece ayudar.

Apreciaría alguna ayuda!


Debe cambiar su {% block %} y su {% if %}

{% block messages %} {% if message %}<div class=''imp_message''>{{ message }}</div>{% endif %} {% endblock %}


Para verificar, en una sentencia if, necesita comparar el valor con Ninguno, como este:

{% if some_missing_var != None %} // code here if some_missing_var exists {% else %} // code here if some_missing_var does not exist {% endif %}

En otros casos (de los documentos):

Generalmente, si una variable no existe, el sistema de plantillas inserta el valor de la opción de configuración string_if_invalid del motor, que se establece en '''' (la cadena vacía) de forma predeterminada.

Probé algunas de las otras respuestas, y no funcionaron hasta que leí los documentos y se aclaró lo anterior.

enlace a documentos que describen el manejo de variables no válidas