2012-08-03 7 views
11
{% include "example.html" with name="John" hide_last_name=True %} 

Básicamente, intento incluir "example.html" como una sub-plantilla en mi plantilla principal. Se proporciona un contexto adicional con la media de pasar los argumentos de palabra clave name y hide_last_name. Si bien el sistema de plantilla django no tiene problemas para reconocer name, de alguna manera simplemente no puede reconocer hide_last_name. Sospecho que el uso del argumento de palabra clave booleano en la etiqueta Include ahora está permitido, pero luego no puedo encontrar ningún lugar en los documentos oficiales que mencione eso. Por favor ayuda. Gracias.Cómo pasar el argumento de palabra clave booleana junto con el uso de la etiqueta de plantilla "Incluir"

Respuesta

11

La plantilla Django trataría el True como una variable e intentaría encontrarlo en su contexto.
Usted podría utilizar cadena no vacía para representar el valor verdadero o asignar el valor verdadero de la True en el contexto, por ejemplo a través TEMPLATE_CONTEXT_PROCESSORS:

def common_vars(request): 
    return { 
     'True': True, 
     'False': False, 
     'newline': '\n', 
     ... 
    } 
+0

Estaba sospechando eso pero no podía estar seguro. Gracias por confirmar eso. – tamakisquare

8

Para Django < = 1.4.x

Como dije antes, Django intenta encontrar una variable llamada "Verdadero". La forma más simple de manejar esto es usar un valor entero, que no será evaluado.

Se puede escribir en la plantilla Includer

{% include "example.html" with show_last_name=1 %} 

y en la plantilla incluida

John 
{% if show_last_name %} 
    Doe 
{% endif %} 

Para Django> = 1.5

Puede utilizar verdadero y falso en las plantillas, entonces esto ya no es un problema

2

En django 1.5 puede usar True en las plantillas django según su release notes.

Y si está trabajando en versiones anteriores, ¡debería ir por lo que sugirió @okm!

Cuestiones relacionadas