Pylons上のMakoでToscaWidgets使ってみる
もうなんだか組み合わせがえらいことになってきている。
ToscaWidgetsのtwformsはテンプレートエンジンにGenshi使ってるし。
まずはwsgiミドルウェアを設定する。
config/middleware.py
... from toscawidgets.middleware import make_middleware ... def make_app(global_conf, full_stack=True, **app_conf): ... app = make_middleware(app, global_conf, host_framework="pylons")
フォームを作る。
class UserFormFields(WidgetsList): name = forms.TextField("name") introduction = forms.TextArea("intoduction") class UserForm(forms.TableForm): fields = UserFormFields()
コントローラー内では、テンプレート参照用にcへformを設定する。
(ん?formはグローバルに作った方が良いのだっただろうか?)
また、ToscaWidgets提供のrender_responseで、Responseを作成する。
from toscawidgets.mods.pylonshf import validate, render_response class MainController(BaseController): def index(self): c.values = dict(name=u'aodag', introduction=u'Pythonプログラマー') c.form = UserForm() return render_response("/main_index.html")
テンプレートの中では、formにvaluesを渡して呼び出す。
0.9.6からはデフォルトでMakoが使われるようだ。
# -*- coding:utf-8 -*- <?xml version="1.0"?> <html> <body> ${c.form(c.values)} </body> </html>