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

Django中MultiValueDictKeyError('name')错误解决求助

解决Django 4.2中的MultiValueDictKeyError错误

错误核心原因

报错信息:

MultiValueDictKeyError at /gf/
'name'
Request Method: GET
Request URL: http://127.0.0.1:8000/gf/?age=28&csrfmiddlewaretoken=0NribXMzevzOMqH3YoYiK65wqODRNRj3oiKBT50X5NK4BTi7j87UhMTRndTpz8S5
Django Version:4.2
Exception Type:MultiValueDictKeyError
Exception Value:'name'

本次错误的直接诱因是路由配置错误:在urls.py中,/gf/路径错误指向了age_view函数,而非对应的gf_view。当提交age.html表单到/gf/时,age_view会尝试从GET请求中获取name参数,但此时请求仅携带age参数,直接用下标取值触发了MultiValueDictKeyError。

另外你提到的表单name属性问题无需担心:Django表单生成的input标签默认会使用字段名作为name属性(比如Nameform的name字段对应的input标签name就是name),这不是本次错误的原因。

修复步骤

1. 修正路由配置

修改urls.py中/gf/对应的视图函数:

from django.urls import path
from . import views
urlpatterns = [
    path('name/',views.name_view,name='name'),
    path('age/',views.age_view,name='age'),
    path('gf/',views.gf_view,name='gf'),  # 修正此处,指向正确的gf_view
    path('result/',views.result_view,name='result')
]

2. 优化视图参数获取逻辑(可选但推荐)

直接用request.GET['key']会在key不存在时触发报错,建议改用.get()方法,避免程序崩溃:

# views.py中修改各视图函数
def age_view(request):
    form=AgeForm()
    name=request.GET.get('name')  # 不存在时返回None
    if name:
        request.session['name']=name
    return render(request,'age.html',{'form':form})

def gf_view(request):
    form=GFForm()
    age=request.GET.get('age')
    if age:
        request.session['age']=age
    return render(request,'gf.html',{'form':form})

def result_view(request):
    gf=request.GET.get('gf')
    if gf:
        request.session['gf']=gf
    return render(request,'result.html')

3. 修复模板语法错误

result.html中存在过滤器语法错误,将{{value:title}}改为{{value|title}}:

<li><h2>{{key|upper}}:{{value|title}}</h2></li>

额外优化建议

你的逻辑中已经用session存储了之前提交的name,后续视图无需再从GET参数中获取,直接从session读取更合理,比如:

def gf_view(request):
    form = GFForm()
    age = request.GET.get('age')
    if age:
        request.session['age'] = age
    # 直接从session获取已存储的name,无需依赖GET参数
    stored_name = request.session.get('name')
    return render(request,'gf.html',{'form':form, 'stored_name': stored_name})

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.24 14:17:30