1

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

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

最終的に、ページにJSONを使用してテーブルのみを更新することを計画していましたが、それでこの問題は解決しますが、以前の検索で戻るボタンが機能しないなど、さらに多くのことが導入されるかどうかはわかりません.

4

4 に答える 4

2

「チェックボックスの状態を「覚える」ための最も簡単な解決策は何ですか?」

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

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

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

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

    • フォームのチェックボックス情報を Cookie に入れます。返信とともに送信してください。フォームに何をシードするかがわかるように、各リクエストで Cookie を確認します。

    • セッションキーを Cookie に入れます。これは、Django が行うことです。これを自分で実装しないでください。

  3. URL 内のクエリ文字列。Cookie の場合と同じ 2 つの選択肢があります。設定を古い base64 文字列にするか、セッションを表す ID を渡します。

于 2009-07-07T17:11:33.183 に答える
0

Formオブジェクトを使用している場合は、コンストラクターにリクエストを渡して、それで済ませることができます。手動で行う場合は、セッションをいじくり回す必要があります。

于 2009-07-09T06:43:59.107 に答える
0

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

于 2009-07-07T17:06:26.283 に答える
0

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

request.GET['あなたのフィールド']

print ステートメントを使用して、GET で利用可能な情報を調べます。

print request.GET['yourfield']

于 2009-07-07T17:10:34.993 に答える