Python 使用request.POST.get时出现密钥错误
我正在尝试在未提供参数时让request.POST.get开始工作。我的理解是,在这种情况下,它返回Python 使用request.POST.get时出现密钥错误,python,django,Python,Django,我正在尝试在未提供参数时让request.POST.get开始工作。我的理解是,在这种情况下,它返回None。然而,它抛出的错误与我使用请求时得到的错误相同。POST['key']:MultiValueDictKeyError:“'key'” 代码: 我也尝试过使用try/除了与request.POST['key'],但我在那里遇到了同样的问题。我怀疑这可能是由于我不熟悉Django和Python造成的,但任何建议都将不胜感激 我正在使用Django 1.6.5/Python 2.7。试着这样写
None
。然而,它抛出的错误与我使用请求时得到的错误相同。POST['key']:MultiValueDictKeyError:“'key'”
代码:
我也尝试过使用try
/除了与request.POST['key']
,但我在那里遇到了同样的问题。我怀疑这可能是由于我不熟悉Django和Python造成的,但任何建议都将不胜感激
我正在使用Django 1.6.5/Python 2.7。试着这样写:
def myRoute(request):
if request.POST:
data = request.POST.get('key', 'SomeDefaultValue')
使用.get
方法不应抛出键错误;因此,如果问题仍然存在,请检查您的代码,因为问题可能在其他地方出现。您可以为get方法提供默认值,如下所示:
data = request.POST.get('key', None)
如果不存在值,则将数据设置为无。或者您可以自己检查该值:
if 'key' in request.POST:
data = request.POST['key']
else:
data = None
这是不可能的。DjangoQueryDict
对象,即request.POST
应该是,是Django.util.MultiValueDict
的子类,它以通常的方式实现get
。您确定这是引发异常的特定行吗?完整的回溯可能会有所帮助。我意识到我在回溯中看到了一些非常奇怪的东西——它总是引用相同的两行代码,不管它们是否被注释掉,甚至是否存在。重新启动机器修复了它,所以我不知道发生了什么。感谢您的帮助。get
如果不提供默认值,则在必要时始终返回None
——指定默认值不会改变任何内容。此外,django.util.MultiValueDict中的get
实现也执行中的检查-这两个表达式的作用与data=request.POST.get('key')
相同。OP的问题几乎肯定在别处。你确定吗?指示.get只是一个带钩子的。如果未设置密钥,getitem将抛出错误。是的,我确定。如果不是,请检查源代码:request.POST.get
不应抛出错误,因此它的使用方式是正确的irrelevant@PadraicCunningham我就是这么说的。。。我刚刚建议了另一种方法,使用if语句确保POST对象中有数据。是的,但我想指出的是,您不需要另一种方法,OP不共享其他内容,因为无论使用什么。get
方法都不应该抛出keyrerror。
if 'key' in request.POST:
data = request.POST['key']
else:
data = None