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

Django模板中如何实现select下拉框保留用户选中的option值

SELECT下拉列表提交后保留选中状态实现方案

核心需要修改两处:视图层把选中值传入模板,模板层给匹配的选项加selected属性。

1. 修改视图函数,补充选中值到上下文

你之前已经拿到了用户选择的selected_lang变量,只需要把它加到返回的context里即可,首次访问时设置默认选中值,避免模板取值报错:

def lang_convert_view(request):
    if request.method == "POST" and 'txt' in request.POST:
        txt = request.POST.get('txt')
        selected_lang = request.POST.get('lang_txt')
        data = custom_function_name(txt)
        context = {
            'data': data,
            'selected_lang': selected_lang  # 新增:传入用户选中的语言值
        }
    else:
        context = {
            'selected_lang': 'span_to_eng'  # 首次访问默认选中首项
        }
    return render(request, 'index.html', context)

2. 修改模板下拉选项,绑定选中状态

给每个<option>标签增加Django模板判断,当选项value和传入的selected_lang一致时,添加selected属性,浏览器就会自动把该选项展示为当前选中项:

<form action="" method="post">
{% csrf_token %}
<div class="d-flex form-inputs">
<select class="form-select" aria-label=".form-select-lg" name="lang_txt">
<option value="span_to_eng" {% if selected_lang == 'span_to_eng' %}selected{% endif %}>Spanish To English</option>
<option value="eng_to_span" {% if selected_lang == 'eng_to_span' %}selected{% endif %}>English To Spanish</option>
<option value="french_to_eng" {% if selected_lang == 'french_to_eng' %}selected{% endif %}>French To English</option>
</select>
<input name="txt" class="form-control p-3" type="text" placeholder="Search...">
<a href="#"><img src="/static/assets/image/search.png" alt="搜索"></a>
</div>
</form>

效果说明

  • 首次打开页面时,默认展示首项「Spanish To English」,和原有逻辑完全一致
  • 用户选择任意选项提交表单后,下拉框会自动保持用户上次选择的选项,不会重置回首项
  • 如果后续下拉选项数量增多,也可以把选项列表整理成字典/列表从视图传入,用{% for %}循环渲染,减少重复的判断代码

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:00:17