Search code examples
djangocheckboxstateless

Preserving checkbox states on same page with query results


I'm using django, and have a static webpage with a GET form, and about 30 checkboxes. The user selects various boxes, and clicks search, and a result from a database is returned to the same page in a table. However, all the checkboxes have been cleared, since HTML is stateless.

What's the simplest solution to 'remember' the state of the checkboxes? I've looked through django docs, but the examples just use a variable and an IF for a single text form. Surely, I dont have to check if each checkbox is set in the querydict? Also, my form was custom created, rather than using django forms.

Eventually, i was planning to use JSON for the page and only update the table, and that would solve this problem, but Im not sure if it would introduce many more, eg back button not working for previous searches.


Solution

  • "What's the simplest solution to 'remember' the state of the checkboxes?"

    Web transactions are stateless.

    There are several common ways to implement state.

    1. Sessions. If your user is logged in, they have a session. Store stuff in their session. The form they POST goes into the session. This can then be retrieved in order to post a new form back to them.

    2. Cookies. Sessions use cookies. You can use cookies manually. You have two choices here.

      • Put the form checkbox information into the cookie. Send it down with the response. Check for the cookie in each request so you know what to seed the form with.

      • Put a session key in the cookie. This is what Django does for you. Don't implement this yourself.

    3. Query strings in the URL. You have the same two choices as with cookies. Either make the settings a big-old base64 string or pass an ID that stands in for the session.