You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Django的url模板标签的GET表单action中传递page分页参数

问题根因

当表单使用GET方法提交时,浏览器会自动将表单内部所有带name属性的输入控件的值拼接为查询字符串,直接覆盖action属性中自带的查询参数,所以你写在action里的page=1会被丢弃,不是url模板标签的用法问题。

最优解决方案

不需要修改action属性,直接在表单内添加一个隐藏的page输入项即可,修改后的表单代码如下:

<form method="get" action="{% url 'core:search' %}">
   <div class="form-floating mb-3">
      <input type="hidden" name="page" value="1">
      <input type="search" class="form-control" id="floatingInput" name="q" value="{{ request.GET.q }}">
      <label for="floatingInput">Type your search</label>
   </div>
   <button class="w-100 btn btn-lg btn-primary" type="submit">Search</button>
</form>

修改后提交表单,生成的URL就会完全符合http://127.0.0.1:8000/search/?page=1&q=query的预期格式。

补充说明
  • 你原有视图中的分页逻辑本身已经兼容page参数缺失的场景,就算不做上面的修改,用户首次搜索也会默认返回第一页结果,只是URL中不会显式携带page=1参数
  • 如果后续需要做分页跳转,只需要在分页按钮的链接中携带对应页码和当前搜索的q参数即可

内容的提问来源于stack exchange,提问作者André Carvalho

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 00:57:04