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>