Django中request.POST存在search键却无法获取对应值问题求助
问题原因
- 表单内存在两个
name属性为search的元素:一个是{{form_search.search}}渲染生成的搜索输入框,另一个是提交按钮自身,二者重名导致提交时两个元素的值都会被上传。 - 你获取到的
QueryDict中search对应的值为列表['food', ''],前者是输入框内用户填写的内容,后者是未设置value属性的提交按钮默认上传的空值。 - Django的
QueryDict调用get()方法时,默认返回同键多值列表的最后一个元素,因此你拿到的结果是空字符串,自然没有内容输出。
解决办法
有两种可行方案可任选其一:
- 修改提交按钮的
name属性,避免和输入框重名,比如改为search_submit,修改后的按钮代码如下:
<button type="submit" class="btn btn-primary" name="search_submit">Search!</button>
修改后提交的request.POST中search只会对应输入框的值,直接调用request.POST.get("search")即可正常获取内容。
- 不修改前端代码,后端改用
QueryDict的getlist()方法获取所有同键值,取第一个有效内容即可,示例代码如下:
search_keyword = request.POST.getlist("search")[0]
内容的提问来源于stack exchange,提问作者Wizard
相关产品推荐
相关产品推荐

