You actually did right in your second experiment. The way you are supposed to do it is by passing the `value` to the form, not trying to set attributes of single fields. See https://tw2core.readthedocs.io/en/latest/widget/#widget-value
So in practice the right way would be to do: form(value=dict(tf_url=X)).display() or form.display(value=dict(tf_url=X)) On Tue, May 7, 2019 at 4:48 PM Mikhail <[email protected]> wrote: > Hello again! > Finally I have time to port my project to new version of TurboGears. I was > able to solve most of the issues but now I need your help: > I can't load data to TW2 form. Here are some code: > > widgets/news.py fragment (form): > > class NewsEditForm(TableForm): > title_label = Label(text=u'Изменить новость') > tf_title = TextField(label=u'Заголовок', validator=NotEmpty, size=50) > tf_url = TextField(label=u'Ссылка', validator=URL, size=50) > tf_text = TextArea(label=u'Текст новости', validator=NotEmpty, rows=10 > , cols=50) > news_id = HiddenField('news_id') > > submit = SubmitButton(value=u"Изменить") > action = '/manage/saveNews' > > manage.py Controller fragment: > > class ManageController(BaseController): > ... > @expose('cafealpha.templates.manage_news') > def news(self, news_id='', *args, **kw): > if not request.identity: #if not authorized then redirect to / > redirect('/') > > news = DBSession.query(News).filter_by(id=news_id).one() > news_form = NewsEditForm() > news_form.tf_title.value = news.title > > return dict(pagename=u'Новости', form=news_form) > > manage_news.xhtml fragment: > > ${form.display()} > > Error I'm getting is: > File > "/home/uni/projects/cafealpha-tg23/venv/cafealpha/cafealpha/controllers/manage.py" > , line 46, in news > news_form.tf_title.value = news.title > AttributeError: type object 'NewsEditForm_d' has no attribute 'tf_title' > > > It seems I'm misssing something obvious so pleas point me. > > My Python is rusty so feel free to laugh :) > > *P.S.* I was able to load data to form using this code in template: > ${form.display(value=dict(tf_url=news_url))} > > and passing news_url with return dict() from Controller. But I just think > this is not the best way. Or is it? > > -- > You received this message because you are subscribed to the Google Groups > "TurboGears" group. > To unsubscribe from this group and stop receiving emails from it, send an > email to [email protected]. > To post to this group, send email to [email protected]. > Visit this group at https://groups.google.com/group/turbogears. > To view this discussion on the web visit > https://groups.google.com/d/msgid/turbogears/564ca3c2-0b22-4c30-8055-9b80ec542e41%40googlegroups.com > <https://groups.google.com/d/msgid/turbogears/564ca3c2-0b22-4c30-8055-9b80ec542e41%40googlegroups.com?utm_medium=email&utm_source=footer> > . > For more options, visit https://groups.google.com/d/optout. > -- You received this message because you are subscribed to the Google Groups "TurboGears" group. To unsubscribe from this group and stop receiving emails from it, send an email to [email protected]. To post to this group, send email to [email protected]. Visit this group at https://groups.google.com/group/turbogears. To view this discussion on the web visit https://groups.google.com/d/msgid/turbogears/CAJfq2JHRfcF2b%2ByRG%2Ba5LZk9sYyO1SLRbZtTyE6X646Pf_yY4w%40mail.gmail.com. For more options, visit https://groups.google.com/d/optout.

