[英]MultiValueDictKeyError / request.POST
我想我在request.POST['title']有问题
MultiValueDictKeyError at /blog/add/post/ "'title'" 请求方法:GET 请求 URL: http ://119.81.247.69:8000/blog/add/post/ Django 版本:1.8.2 异常类型:MultiValueDictKeyError 异常值:
“'title'”异常位置:/usr/local/lib/python2.7/dist-packages/django/utils/datastructures.py in getitem ,第 322 行 Python 可执行文件:/usr/bin/python Python 版本:2.7.3
视图.py
def add_post(request):
entry_title = request.POST["title"]
return HttpResponse('Hello %s' % entry_title)
写.html
<form method="POST" action="/blog/add/post/">
<p>
<label for "title">Title</label>
<input type="text" id="title" name="title" value="" />
</p>
<p>
<label for 'category'>Category</label>
<select id="category" name="category"></select>
</p>
<p>
<label for 'tags'>Tags</label>
<input type="text" id="tags" value="" />
</p>
<p>
<textarea id="content" name="content"></textarea>
</p>
<p>
<input type="submit" value="Write" />
</p>
改变:
def add_post(request):
entry_title = request.POST["title"]
return HttpResponse('Hello %s' % entry_title)
到:
def add_post(request):
entry_title = request.POST.get("title", "Guest (or whatever)")
return HttpResponse('Hello %s' % entry_title)
它不会抛出KeyError
,但您应该考虑使用 Django 的表单,而不是直接从 POST 数据中提取值。
或者,您可以保留现有代码并简单地检查异常:
def add_post(request):
try:
entry_title = request.POST["title"]
except KeyError:
entry_title = "Guest"
return HttpResponse('Hello %s' % entry_title)
但这就是.get()
在内部所做的。
我遇到了同样的问题,我发现我忘记在我的 Html 页面的input type
中添加"name=" text" "
..
正如您的追溯所说: Request Method: GET
。 所以你的 POST dict 显然是空的,因此你得到了你的KeyError
。
在 Django 项目中,我遇到了同样的问题,我在 url.py 中犯了一个错误
错误的
path('support/',views.**support**,name='support'),
path('verifyDB/',views.**support**,name='verifyDB'),
正确的
path('support/',views.**support**,name='support'),
path('verifyDB/',views.**verifyDB**,name='verifyDB'),
因此,请检查您在 view.py 中的路径,也许有错误。
对于在 POST 方法中访问文件,这可能是因为您可能错过了对 HTML 文件的表单标记中的文件进行加密,即-
{form action="upload" method="POST" enctype="multipart/form-data"}
^^^^^^^^
需要避免 MultiValueDictError。
我遇到了同样的问题,但是当我将 return HttpResponseRedirect('') 更改为
返回 HttpResponseRedirect('/') 它有效
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.