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

Django模板中如何让HTML下拉框默认选中URL参数指定的月份?

解决Django下拉框默认选中URL参数月份的问题

嘿,我一眼就看出问题所在啦!你的下拉框能正常显示1-12,但默认选中逻辑不生效,核心原因是数据类型不匹配:

  • request.GET.month从URL里拿到的是字符串类型(比如你的URL里的"7")
  • 而months上下文里的i是整数类型(比如7)

整数和字符串直接用==比较是不相等的,所以你的if条件永远不会触发!

给你三种可行的解决方案,选你顺手的来:

方案1:在模板里把URL参数转成整数

用Django内置的add:0过滤器,它能把字符串格式的数字转换成整数,修改条件判断部分即可:

{% for i in months %}
    {% if i == request.GET.month|add:0 %}
        <option value="{{ i }}" selected="selected">{{ i }}</option>
    {% else %}
        <option value="{{ i }}">{{ i }}</option>
    {% endif %}
{% endfor %}

方案2:在视图里把月份列表改成字符串类型

修改视图里生成months的代码,把整数转成字符串:

# 原来的代码:months = range(1,13)
months = [str(i) for i in range(1,13)]

这样模板里的i和request.GET.month都是字符串类型,原来的条件判断就能正常生效了。

方案3:在模板里把整数转成字符串

用stringformat:"s"过滤器把整数i转成字符串,再和URL参数比较:

{% for i in months %}
    {% if i|stringformat:"s" == request.GET.month %}
        <option value="{{ i }}" selected="selected">{{ i }}</option>
    {% else %}
        <option value="{{ i }}">{{ i }}</option>
    {% endif %}
{% endfor %}

随便选一种方法试试,应该就能让下拉框默认选中URL里指定的月份啦!

内容的提问来源于stack exchange,提问作者Linh Nguyen

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 06:28:52