2009-07-07 6 views
0

一般的なアプリケーションを開発中です。任意のモデルに取り付けることができるFooオブジェクトを処理すると仮定しましょう。テンプレートにdjango - 汎用アプリケーションビューからフォームエラーを返す

フー形態はget_foo_formテンプレートタグによって示すことができる:

{% get_foo_form for object as form %} 

オブジェクトがfooが接続されるオブジェクトです。

フォームは、foosアプリケーションのビューに投稿します。フォームが有効な場合はすべて正常です。新しいfooが保存され、ビューは元のページにリダイレクトされ(フォームに隠された '次の'引数を使用)、新しいfooがうまく表示されます。

フォームが有効でない場合、私は失われています。同じ場合、同様のアプリケーションの場合、django.contrib.commentsには、中間ページがあり、ユーザーにエラーの修正を依頼します。しかし、私は中間ページを表示したくない、私はエラーで元のページを表示したい。以前のページにエラーメッセージを渡す必要があるため、ここではリダイレクトでは十分ではありません。

私がやろうとしていることを達成する方法はありますか、それとも構造全体を変更する必要がありますか?

答えて

0

一般的なモデルのアプリをお持ちの場合、投稿処理ビューでフォームを検証した後、エラーメッセージを投稿ビューに渡す最も良い方法は、メッセージを保存してリダイレクトするセッションを使用しているようです。

ありがとうございました。+1からAlbertoPLまでお問い合わせください。

+0

あなたが意味することをするためのコードを私たちに提供できますか?ありがとうございます! –

2

あなたがしていたページに戻るときにエラーメッセージを辞書に追加するだけです。次に、HTMLにタグを追加して、エラーがあるかどうかを確認し、必要に応じて適切なエラーを表示します。

エラーメッセージをリストに格納し、それをrender_to_responseの呼び出しで辞書パラメータの1つとして持つことができます。

+0

@AlbertoPL post_fooビューは投稿要求を取得し、フォームが有効かどうかをチェックします。有効な場合はfooを保存し、レコードを表示するビューにリダイレクトします。有効でない場合は、エラー変数を渡す必要があります。私はそれを使用して任意の変数を渡すことはできませんので、私はhttpresponseredirectを使用することはできません。ポストビューは他のビュー(メインアプリケーション内のレコードを示す)が何を認識しないか気にしないので、render_to_responseは使用できません。 – shanyu

+0

ああ、その場合は、エラーメッセージを渡すためにポストビューが呼び出せる別のビューに関数を追加できますか?そして、それらのエラーメッセージでページをレンダリングするのは、そのビューまでになります。 – AlbertoPL

+0

あなたが意味するものの例を私に提供できれば、本当に感謝します。私はあなたが意味することを確信していません:) – shanyu

関連する問題