WTFormsメモ

WTForms(http://wtforms.simplecodes.com/)
form要素のレンダリングとかバリデーションをやってくれるライブラリ。flask,tipfyあたりで使われてる。
なかなか良い感じだけど、日本語の情報は全く見つからなかったんで適当にメモしていく。


まずFormを定義

from wtforms import Form, fields, validators

class TestForm(Form):
    hoge = fields.TextAreaField('test', [validators.Required()])

まあ見たまんまですね。validatorsのところでバリデーションの内容を記述する感じ。

print TestForm().hoge #<textarea id="hoge" name="hoge"></textarea>

ふむふむ。


Tipfy(テンプレートエンジンはMako)を使って実際に書いてみる。
python

# -*- coding: utf-8 -*-
from tipfy import RequestHandler, Response, cached_property
from tipfy.ext.mako import render_response

class HogeHandler(RequestHandler):
    def get(self, **kwargs):
        return render_response('piyo.html', textarea = self.form.hoge(rows=8, cols=50))

    def post(self, **kwargs):
        week = get_week()
        if self.form.validate():
            hoge = self.form.hoge.data
            #以下何らかの処理
        else:
            return self.redirect('/')

    @cached_property
    def form(self):
        return TestForm(self.request)

・HTML

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8" /> 
	<title>Test</title>
</head>
<body>
<form action="/" method=POST>
	${textarea} 
    <!-- <textarea cols="50" id="hoge" name="hoge" rows="8"></textarea> -->
	<input type="submit"value="Save">
</form>
</body>
</html>