2009-07-07 6 views
1

私はdjangoを使用しています.GETフォームの静的なWebページと約30個のチェックボックスがあります。ユーザーはさまざまなボックスを選択して検索をクリックし、データベースの結果がテーブルの同じページに返されます。ただし、HTMLはステートレスであるため、すべてのチェックボックスがクリアされています。同じページにクエリ結果を保存するチェックボックスの状態を保持する

チェックボックスの状態を「覚えている」という最も簡単な解決策は何ですか?私はdjangoのドキュメントを見てきましたが、例では変数とIFを単一のテキスト形式に使用しています。確かに、各チェックボックスがquerydictに設定されているかどうかを確認する必要はありませんか?また、私のフォームは、djangoフォームを使用するのではなくカスタム作成されました。

最後にJSONを使用してテーブルを更新するだけでしたが、この問題は解決しますが、以前の検索では機能しないバックボタンなど、もっと多くのものを導入するかどうかはわかりません。

+0

ありがとうございます。 Djangoのショートカット(カスタムフォーム付き)がなくてはならないことを明確にするのを手伝ってくれました.JSONの使用に切り替えることになったので、今すぐバックボタンのことを理解してください。良い週末を。 – paulito

答えて

2

"のチェックボックスの状態を '覚えておく' ための最も簡単な解決策は何ですか?"

Webトランザクションはステートレスです。

状態を実装するいくつかの一般的な方法があります。

  1. セッション。ユーザーがログインしている場合は、セッションがあります。彼らのセッションに物を保管してください。 POSTフォームがセッションに入ります。これは、新しいフォームを投稿するために取得することができます。

  2. クッキー。セッションではCookieが使用されます。クッキーは手動で使用できます。ここでは2つの選択肢があります。

    • フォームのチェックボックス情報をクッキーに入れます。それを返信してください。各リクエストのクッキーをチェックして、フォームをどのようにシードするかを知ってください。

    • クッキーにセッションキーを入れます。これはDjangoがあなたのためにするものです。これを自分で実装しないでください。

  3. URLのクエリ文字列。クッキーと同じ2つの選択肢があります。設定を大きく古いbase64文字列にするか、セッションに使用されるIDを渡します。

0

バックボタンの問題(ハッシュタグなど)を修正する方法があります。しかし、私がこれをいつも成し遂げた方法は、まさにその通りです。基本的には、チェックボックスをPOSTの配列として渡して、それを作るときに必要なすべてのボックスを作るループを作成し、POSTがチェックされているかどうかをチェックします。それ以外は分かりません。

0

GETを使用していますか?良い。テキストフィールドデータにアクセスするのと同じ方法で、チェックボックスにアクセスします。

request.GET [ 'yourfield']

使用した印刷staments GETで利用可能な情報を検査します。

印刷request.GET [ 'yourfield']

0

フォームオブジェクトを使用していた場合は、コンストラクタに渡してリクエストを完了するだけで済みます。手動でやっているのであれば、そのセッションでいくつかの細かい作業をする必要があります。

関連する問題