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

如何在Django GET表单中使用{% querystring %}模板标签?

用Django 5.1的{% querystring %}处理GET表单的查询参数保留问题

当然可以用{% querystring %}解决这个问题,比之前手动加隐藏字段的方案简洁太多。

你只需要在表单里用{% querystring %}生成当前页面除query外的所有查询参数,转成隐藏字段,提交表单时这些参数就会被一并带上。

修改后的表单代码如下:

<form method="GET">
    {# 保留除query外的所有现有查询参数,生成隐藏字段 #}
    {% querystring without "query" as preserved_params %}
    {% for key, value in preserved_params %}
        <input type="hidden" name="{{ key }}" value="{{ value }}">
    {% endfor %}

    <input name="query" value="{{ request.GET.query }}">
    <button type="submit">Search</button>
</form>

原理很直观:

  • {% querystring without "query" %}会读取当前URL的查询参数,去掉query字段后返回处理好的查询字符串对象
  • 循环该对象,把每个键值对转成隐藏输入框,提交表单时这些参数就会和query字段一起被提交
  • 最终就能得到包含paginate_by和query的完整查询字符串:localhost:8000/?paginate_by=50&query=abc

如果之后要添加其他需要保留的参数,只需调整without后的字段列表即可,比如without "query" "other_field",非常灵活。

内容的提问来源于stack exchange,提问作者Matija Sirk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 23:52:45