利用 widgets.Form 实现日历表单
Posted in Widgets on 04月 14th, 2006其实现在对 widgets.Form 的实现机制还不是很清楚
但是看到 widgets.TableForm 与 widgets.ListForm 的用法,基本上就是在继承 widgets.Form 的时候加入一个 template 属性.
这个 template 是一个带有 kid 名称空间的字符串,也就是一个kid模版
通过这个kid模版,tg实现了对form的封装
下面是我简单的根据 widgets.Form 派生了一个我自己的日历表单.
首先,定义一个 CalendarForm 类:
import widgets
class CalendarForm(widgets.Form):
template = """ """ # xml 代码无法显示,其实copy widgets.ListForm的template就可以了
calendar_form = CalendarForm(fields=[widgets.CalendarDatePicker()],
submit_text="choose date")
class Root:
@expose(template="your.template.form")
index(self):
return dict(calendar_form=calendar_form)
@expose()
def getdate(self, datetime):
turbogears.flash("Got Datetime!")
raise redirect("/")
再在模版文件里面写上,
${calendar_form(action="getdate")}
一个最简单的日历表单就做好了.
但是和我的想法还差得比较远,还得一边学js一边改了.