1

我正在使用 django,并且有一个带有 GET 表单的静态网页,以及大约 30 个复选框。用户选择各种框,然后单击搜索,数据库中的结果返回到表中的同一页面。然而,所有的复选框都被清除了,因为 HTML 是无状态的。

“记住”复选框状态的最简单解决方案是什么?我浏览了 django 文档,但这些示例仅使用变量和 IF 来表示单个文本表单。当然,我不必检查查询字典中是否设置了每个复选框?此外,我的表单是自定义创建的,而不是使用 django 表单。

最终,我计划为页面使用 JSON 并且只更新表格,这将解决这个问题,但我不确定它是否会引入更多,例如后退按钮不适用于以前的搜索。

4

4 回答 4

2

“'记住'复选框状态的最简单解决方案是什么?”

Web 事务是无状态的。

有几种常见的方式来实现状态。

  1. 会议。如果您的用户已登录,则他们有一个会话。在他们的会话中存储东西。他们发布的表单进入会话。然后可以检索它,以便将新表单发回给他们。

  2. 饼干。会话使用 cookie。您可以手动使用 cookie。你在这里有两个选择。

    • 将表单复选框信息放入 cookie。将其与响应一起发送。检查每个请求中的 cookie,以便您知道使用什么播种表单。

    • 将会话密钥放入 cookie。这就是 Django 为您所做的。不要自己实现。

  3. 查询 URL 中的字符串。您有与 cookie 相同的两种选择。要么将设置设为旧的 base64 字符串,要么传递一个代表会话的 ID。

于 2009-07-07T17:11:33.183 回答
0

有一些方法可以解决后退按钮问题(哈希标签和附加到 URL 的内容)。然而,我一直做到这一点的方式就是这样。本质上,我会在 POST 中将复选框作为数组传递,然后,当您制作它们时,只需创建一个循环来制作您需要的所有框,然后检查 POST 以查看它是否已被选中。除此之外,我不知道。

于 2009-07-07T17:06:26.283 回答
0

使用 GET?好的。访问复选框的方式与访问文本字段数据的方式相同。

request.GET['你的领域']

使用打印语句检查 GET 中可用的信息。

打印请求.GET['yourfield']

于 2009-07-07T17:10:34.993 回答
0

如果您使用的是 Form 对象,那么您只需将请求传递给构造函数并完成它。如果您手动执行此操作,则必须对会话进行一些处理。

于 2009-07-09T06:43:59.107 回答