クエリ結果と同じページのチェックボックスの状態を保持する
質問
私は django を使用しており、GET フォームと約 30 個のチェックボックスを備えた静的 Web ページがあります。ユーザーがさまざまなボックスを選択し、検索をクリックすると、データベースからの結果が同じページの表に返されます。ただし、HTML はステートレスであるため、すべてのチェックボックスがオフになっています。
チェックボックスの状態を「記憶」するための最も簡単な解決策は何ですか?django のドキュメントを調べましたが、例では単一のテキスト フォームに変数と IF を使用しているだけです。確かに、querydict で各チェックボックスが設定されているかどうかを確認する必要はありません。また、私のフォームは Django フォームを使用するのではなく、カスタムで作成されました。
最終的には、ページに JSON を使用し、テーブルを更新するだけを計画していました。それでこの問題は解決しますが、以前の検索で戻るボタンが機能しないなど、さらに多くの問題が発生するかどうかはわかりません。
解決
「チェックボックスの状態を「記憶」するための最も簡単な解決策は何ですか?」
Web トランザクションはステートレスです。
状態を実装するにはいくつかの一般的な方法があります。
セッション。ユーザーがログインしている場合、セッションが存在します。セッションに内容を保存します。POST したフォームはセッションに入ります。これは、新しいフォームを送信するために取得できます。
クッキー。セッションでは Cookie を使用します。Cookie を手動で使用することもできます。ここでは 2 つの選択肢があります。
フォームのチェックボックス情報を Cookie に入れます。返信とともに送信してください。各リクエストの Cookie を確認して、フォームに何をシードするかを確認してください。
クッキーにセッションキーを入れます。これが Django がやってくれることです。これを自分で実装しないでください。
URL 内のクエリ文字列。Cookie の場合と同じ 2 つの選択肢があります。設定を古い Base64 文字列にするか、セッションの代わりとなる ID を渡します。
他のヒント
(URLに追加その他もろもろのハッシュタグと)戻るボタンの問題を修正する方法があります。しかし、私はいつもこれを達成した方法は、まさにそれを介して行われます。あなたがそれらを作るために行くとき基本的に、私はちょうどあなたが必要とするすべてのボックスを作り、それが確認さかされていますかどうかを確認するためにPOSTに対してチェックするループを作り、その後、POST中に配列としてチェックボックスを渡してしまいます。それ以外は、私は知りません。
GETを使用していますか?良い。あなたがテキストフィールドのデータにアクセスするチェックボックスを同じ方法でアクセスします。
request.GET [ 'yourfield']
GETで入手可能な情報を検査する印刷stamentsを使用します。
印刷request.GET [ 'yourfield']
あなたはFormオブジェクトを使用していた場合、あなただけのコンストラクタに要求を渡すことができますし、それを使って行うこと。手動でそれをやっている場合は、セッションでいくつかのfinanglingを行う必要があるでしょう。