Всякий раз, когда я использую форму WTForms для отображения данных из базы данных:Есть ли простой способ подавить значения полей полей формы WTForms?
sql = "SELECT * FROM rolodex WHERE rolodex_id = " + rolodex_id
cursor = mdb_connect("DictCursor")
cursor.execute(sql)
row = cursor.fetchone()
form = RolodexEntry(**row)
return bottle.template('entry',rolodex_id=rolodex_id,form=form)
(все поля формы являются Текстовые поля)
пустые и NULL значения полей базы данных отображаются в виде «None». Я хочу, чтобы они просто были пусты. Я могу придумать пару способов решить эту проблему, но мне интересно, есть ли одобренный WTForms способ установить значение по умолчанию для текстового поля как пустую строку, а не None?
шаблоны бутылки дать мне простой, если несколько утомительный способ решения этой проблемы на индивидуальной основе:
<p style='font-weight: bold; color: blue; margin-left: auto; margin-right: auto; width: 50%'>
% if form.firstname.data:
{{form.firstname.data}}
% end
% if form.lastname.data:
{{form.lastname.data}}
% end
</p>
Я попытался изменить атрибут по умолчанию в определении поля:
firstname = TextField('First Name',[validators.length(max=40)], default="")
но это ничего не делало; то есть form.firstname.data по-прежнему отображается как None
, если поле пусто в базе данных.
привет - Спасибо за ваш ответ, но я не понимаю, как это помогает. В моем случае база данных содержит как пустые, так и NULL-поля (т. Е. Некоторые поля базы данных уже установлены на «»). В любом случае 'form.field_name.data' выводит как« Нет »на результирующей странице HTML (т. Е. Символы N-o-n-e). Из этого становится ясно, что любое ложное значение в строке будет распечатываться как «Нет». Поскольку я хочу, чтобы он по умолчанию просто оставил поле пустым, если значение из базы данных «False», предварительная установка значения поля в словаре не помогает (см. Следующий комментарий). – pgoetz
Фактически, если я явно установил одно из полей как «" (то есть пустую строку): 'row ['cellphone'] =" "' перед передачей его форме: 'form = RolodexEntry (** row)' он по-прежнему печатается как «Нет» в файле HTML. Я не понимаю, почему это не рассматривается атрибутом поля default. – pgoetz
В качестве эксперимента - что происходит, когда вы делаете то же самое снова (установите «row ['cellphone'] = '''), но установите «firstname = TextField» («Имя», [validators.length (max = 40)], default = "Test string") 'и посмотреть, что отображается. Это проверит, обрабатывает ли это 'default'. Я просто хочу посмотреть, обрабатывает ли она пустую строку как «Нет» или строку. – Ewan