【问题标题】:Find out if the form was submited or the page was refreshed查看表单是否已提交或页面是否已刷新
【发布时间】:2023-03-11 14:19:02
【问题描述】:

我正在使用表单来搜索某个日期。该表单使用 GET 方法进行日期检索。

<form action="" method="GET">
  ...
  <div id="search_button"><input type="submit" value={% trans 'Search' %} name="search"></div>
</form>

我怎么知道是提交按钮被按下还是页面被刷新?

【问题讨论】:

  • 为什么需要知道区别?
  • 因为我的应用程序支持不同的语言。

标签: python django forms refresh submit


【解决方案1】:

如果有人提交了表单,那么查询字符串中就会有以您的表单字段命名的参数。当然,如果有人随后刷新了那个页面,我不确定你能分辨出那个和表单提交之间的区别。

如果您能分辨出区别很重要,您可能应该更改表单以使用 POST。

【讨论】:

  • 我正在使用表单搜索对象,推荐使用 GET 方法。
  • 好的,但是如果您的搜索是不可变的(我假设它是),那么您能分辨出区别真的那么重要吗?在提交表单或刷新先前提交的表单的情况下,我假设您仍然想要进行搜索并返回结果。
  • 对我来说,这种差异很重要。如果页面被刷新,我需要另一个逻辑。
【解决方案2】:

听起来您正在尝试缓存搜索结果。如果是这样,那么您应该尝试检查缓存。

从“if (form.refreshed) { use cached results }”切换到“if (cache.exists(form.GET)) { use cached results }

【讨论】:

  • 我不想缓存结果。因为我的应用程序使用不同的语言,所以在某些情况下事情会变得一团糟。原因是用户提交表单后,该信息仍保留在 url 中。当语言改变时,来自 url 的数据保持相同的格式(格式取决于语言集)。如果我知道我有什么样的操作,我的逻辑将更容易处理这些单独的操作(刷新或提交)。
  • @Seitaridis,所以您想在更改语言时清除查询字符串?我建议你用javascript来做。
  • 我想从 Django 代码中确定何时进行页面刷新或页面提交,但恐怕我做不到。
猜你喜欢
  • 2011-12-04
  • 1970-01-01
  • 1970-01-01
  • 2012-05-05
  • 1970-01-01
  • 2021-01-24
  • 1970-01-01
  • 2014-08-23
相关资源
最近更新 更多