Google App Engine用フレームワーク Kay のフォームに追加された確認画面の機能を試してみた。
Formのコンストラクタで「use_confirmation=True」を指定すると、確認画面を使用できるようになる。
#Formのコンストラクタで「use_confirmation=True」を指定する。
form = CommentForm(use_confirmation=True)
入力画面のsubmitボタンの文字が「確認画面へ」となり、確認画面のsubmitボタンが「保存」となるなど、芸が細かい。
次に、確認画面で保存ボタンが押されたかを調べるには、Form.is_confirmed属性を調べる。
if form.is_confirmed:
#確認画面で保存ボタンが押されたとき
else:
#確認画面を表示
myapp/views.py
def index(request):
#Formのコンストラクタで「use_confirmation=True」を指定する。
form = CommentForm(use_confirmation=True)
if request.method == "POST" and form.validate(request.form):
if form.is_confirmed:
#確認画面で保存ボタンが押された
form.save()
return redirect(url_for('myapp/index'))
else:
#確認画面を表示
form.set_confirmed()
return render_to_response('myapp/index.html',
{'form': form.as_widget()})
myapp/template/index.html
{{form()|safe}}
「{{form()|safe}}」でフォームを表示しているときは、問題なく機能する。
テンプレートでフォームを表示するとき、{% call form() %} ~ {% endcall %} でフォームをカスタマイズしていると、確認画面でも入力部品が表示される。(確認画面の機能は有効である。)
確認画面用の表示も用意する必要がある。