/ / Jinja2 връща низ „Няма” за моделите на Google App Engine - python, google-app-engine, jinja2

Jinja2 връща низа "Няма" за моделите на Google App Engine - python, google-app-engine, jinja2

Модели на Google App Engine, харесва:

from google.appengine.ext.db import Model

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

Тогава в Jinja2 шаблон, наречен от Django изглед с инстанция на M премина в m:

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

Кога m се инициализира без name се настройва, се отпечатва следното:

Името на този M е None.

Предпочитаният и очакван изход (и изходът при използване на Django шаблони) е / е:

Името на това М е.

Знаете ли защо се случва това и как да получите предпочитания и очакван изход?

Отговори:

14 за отговор № 1

Можете също да помислите да използвате Jinja2 "s" или "...

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

ако bool(m.name) == False, това ще се покаже The name of this M is .


ако m.name == False и искате да го покажете като низ "False", можете да използвате филтъра "по подразбиране" на Jinja2:

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

ако m.name is None, това ще се покаже The name of this M is .

ако m.name == False, това ще се покаже The name of this M is False.


Ако искате да използвате филтъра по подразбиране и все още имате нещо, което се оценява като False, показвате като дефинирана стойност по подразбиране, добавете допълнителен параметър:

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

Това трябва да има същия ефект като {{ m.name or "" }}.


Можете да намерите цялата тази информация Референция за вградените филтри на Jinja2


1 за отговор № 2

Мисля, че си ударил отговора. Ако не посочите име за това свойство, App Engine изглежда да я съхранява като None, а не при "", така че когато се отпечата, тя се отпечатва като "None". Посочете по подразбиране като "" и проблемът ви ще изчезне, както казахте.


1 за отговор № 3

Какво ще стане, ако той не иска празен низ да бъде стойността по подразбиране?

Аз самият имам този проблем. Аз не искам празен низ там. Искам null / None / NoneType. Това не е същото като празен низ.

Затова отново поставих въпроса на всички --- Джинджа настоява да преведе "Няма". Какво дава?