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

Django表单设POST方法仍出现MultiValueDictKeyError的原因

MultiValueDictKeyError错误原因及修复

直接触发原因

错误日志明确显示请求方法是GET,但你的verify_user视图函数直接通过request.POST['name']获取表单数据——当请求为GET时,request.POST是空的MultiValueDict,不存在name这个键,因此抛出MultiValueDictKeyError。

另外,视图处理完POST请求后执行了redirect('/verify_user'),重定向会让浏览器发送GET请求再次访问该视图,这也会触发同样的错误。

额外问题(非当前错误直接原因)

表单中确认密码输入框的type属性写错了:type="passord",正确应该是type="password",这个错误会导致输入的确认密码明文显示,但不影响表单提交。

修复方法

1. 视图函数区分请求方法

只有当请求是POST时才处理表单数据,GET请求直接渲染页面:

def verify_user(request):
    if request.method == 'POST':
        # 用get方法获取值,避免键不存在时报错,还可设置默认值
        inputname = request.POST.get('name', '')
        inputpass = request.POST.get('password', '')
        inputconfirmpass = request.POST.get('confirm_password', '')

        if inputpass != inputconfirmpass:
            messages.info(request, "Passwords don't match")
        else:
            messages.info(request, "Passwords match")
    # GET请求或处理完POST后,渲染对应模板
    return render(request, '你的模板文件路径.html')

2. 修正表单笔误

把确认密码输入框的type属性改正确:

<input required type="password" placeholder="Confirm password" name="confirm_password" id="">

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 23:45:59