Модели на 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. Това не е същото като празен низ.
Затова отново поставих въпроса на всички --- Джинджа настоява да преведе "Няма". Какво дава?