Django实现页面刷新后保留下拉菜单选中值的方法
解决Django下拉菜单刷新后保留选中值的问题
要实现页面刷新后下拉菜单保持选中状态,需要从视图和模板两方面修改:
1. 在视图中传递选中参数到模板
修改views.py,将用户选中的选项值传入模板上下文,让模板能获取到之前的选择:
option_menu = request.GET.get("option-menu") qs = Database.objects.filter(database_id=id) if option_menu != '' and option_menu is not None: qs = qs.filter(name__icontains=option_menu) return render(request, template_name='main/database.html', context={ "queryset": qs, "selected_option": option_menu # 新增:传递选中的选项值 })
2. 在模板中动态设置选中状态
修改HTML模板,通过判断当前选项值是否等于selected_option,动态添加selected属性;默认的"Choose a Name"仅在无选中值时保持选中:
<html> <form method="GET" action="."> <select name="option-menu" id="option-menu"> <option value="" disabled {% if not selected_option %}selected{% endif %}>Choose a Name</option> {% for d in database %} <option value="{{d.name}}" {% if d.name == selected_option %}selected{% endif %}>{{d.name}}</option> {% endfor %} </select> <button type="submit" class="btn-filter">Filter</button> </form> </html>
原理说明:表单提交后,视图会把用户选中的选项值传递给模板,模板根据该值为对应的<option>标签添加selected属性,页面刷新后就能自动保持选中状态。
内容的提问来源于stack exchange,提问作者evan2160
相关产品推荐
相关产品推荐

