Pregunta

modelos de Google App Engine, likeso:

from google.appengine.ext.db import Model

class M(Model):
    name = db.StringProperty()

A continuación, en una plantilla Jinja2 llamada desde una vista Django con una en la instancia de M pasado como m:

The name of this M is {{ m.name }}.

Cuando m se inicializa sin ser name conjunto, se imprime la siguiente:

  

El nombre de este M es Ninguno.

La salida preferible y esperado (y la salida cuando el uso de plantillas de Django) serían / ??es:

  

El nombre de este M es.

¿Sabe por qué esto está ocurriendo, y la forma de obtener la salida preferido y esperado?

¿Fue útil?

Solución

También puede ser que desee considerar el uso de Jinja2 "o" ...

The name of this M is {{ m.name or ''}}.

Si bool(m.name) == False, esto mostrará The name of this M is .


Si m.name == False y desea mostrar como la cadena "falso", puede utilizar el filtro "default" de Jinja2:

The name of this M is {{ m.name|default('') }}

Si m.name is None, esto mostrará The name of this M is .

Si m.name == False, esto mostrará The name of this M is False.


Si desea utilizar el filtro predeterminado y todavía tienen nada a evaluar Falso mostrado como su valor predeterminado definido, añadir un parámetro adicional:

The name of this M is {{ m.name|default('', true) }}

Esto debería tener exactamente el mismo efecto que {{ m.name or '' }}.


Se puede encontrar toda esta información en la Jinja2 Integrados filtros de referencia

Otros consejos

creo que se le ocurrió la respuesta por ti mismo. Si no se especifica un nombre para esa propiedad, App Engine para almacenar aparece como Ninguno, no "", por lo que cuando se imprime, que se imprime como "Ninguno". Especificar el valor por defecto como "" y el problema desaparece, como usted ha dicho.

¿Qué pasa si él no quiere cadena vacía que es el valor por defecto?

Tengo este problema a mí mismo. No quiero cadena vacía en ese país. Quiero nula / Ninguno / NoneType. Eso no es lo mismo que una cadena vacía.

Así que hizo la pregunta a todos de nuevo --- Jinja insiste en la traducción de "Ninguno". Lo que da?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top