2016-03-20 16 views
1

喜んでweb2pyは、_formkeyの値を使用して複数のフォームの送信を自動的に防止します。ほとんどの場合、フォームが送信されると、ページが再びロードされ、新しいキーが生成されます。しかし、私はweb2pyのajax関数を使ってフォームを送信しているので、ページをリフレッシュせずに結果を得るので、フォームキーは変わらず、後で送信することはできません。web2pyで複数のフォーム提出を許可する方法は?

このような状況にどう対応する必要がありますか?あなたは、フォーム用に別のアクションを作成し、Ajaxのコンポーネントを介してページにフォーム全体を読み込む検討するかもしれない

答えて

2

def index(): 
    form_component = LOAD('default', 'form.load', ajax=True) 
    return dict(form_component=form_component) 

def form(): 
    form = FORM(...).process() 
    return dict(form=form) 

index.htmlのビューでは、その後、{{=form_component}}経由コンポーネントが含まれるであろう、 form.loadビューでは、{{=form}}を介してフォーム自体をインクルードします(form.loadビューは、最終的にAjax経由でindex.htmlページに挿入されるため、レイアウトを拡張しないように注意してください)。

フォーム全体がAjaxを介してロードされ、自動的にAjax経由で送信されます。新しいフォームもAjax経由で返されます(Javascriptコードをまったく書く必要はありません)。

また、現在の方法を採用したい場合は、コントローラーにAjaxリクエストに応答してフォーム全体を返すように設定し、ajax()関数のtarget引数を形。その場合、Ajaxリクエストが完了すると、フォーム全体が新しいフォーム(新しい_formキーを持つ)に置き換えられます。

+0

ありがとうございました!私はこれを達成するために "web2pyスタイル"を探していました。それはコンポーネントを使用して働いた! – cdonts

関連する問題