当前位置: 首页 > 知识库问答 >
问题:

多值DictKeyError/request.POST

单于山
2023-03-14

我想我在请求时遇到了问题。POST['title']

MultiValueDictKeyError位于/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。getitem中的py,第322行Python可执行文件:/usr/bin/Python Python-Version:2.7.3

views.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>

共有3个答案

轩辕煜
2023-03-14

正如您的回溯所说:请求方法:GET。所以您的POST判决显然为空,因此您会得到您的KeyError

闾丘坚诚
2023-03-14

我也有同样的问题,我发现我忘记在Html页面的输入类型添加"name="text""

督弘化
2023-03-14

改变:

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() 在内部已经执行的操作。

 类似资料:
  • 问题内容: 如何检查多个值,例如: 这是一个例子,所以您了解得更多一些,我知道它不会起作用。 问题答案: 将目标与干草堆相交,并确保交点与目标完全相等: 请注意,您只需要验证所得交集的大小是否与目标值数组的大小相同,即可说是的超集。 为了确认至少有一个值,也是,你可以这样做检查:

  • 5.3. 多返回值 在Go中,一个函数可以返回多个值。我们已经在之前例子中看到,许多标准库中的函数返回2个值,一个是期望得到的返回值,另一个是函数出错时的错误信息。下面的例子会展示如何编写多返回值的函数。 下面的程序是findlinks的改进版本。修改后的findlinks可以自己发起HTTP请求,这样我们就不必再运行fetch。因为HTTP请求和解析操作可能会失败,因此findlinks声明了2

  • 问题内容: 我必须在一行中显示单个人的多个收入,收入类型和雇主名称值。因此,如果“ A”有来自三个不同来源的三个不同的收入, 我需要向他们展示 我既需要“固定列数”(我们知道雇主,收入类型和金额列将要重复多少次)逻辑又需要“动态显示列”(未知这些列要重复的次数) 谢谢。 问题答案: 由于使用的是SQL Server,因此有几种方法可以将数据行转置为列。 聚合函数/ CASE: 您可以将聚合函数与C

  • 问题内容: 如何获得此映射中第一个键的第三个值?这可能吗? 问题答案: 存在执行此操作的库,但是最简单的普通Java方法是创建如下所示的:

  • 当表中的两个属性彼此独立但两者都依赖于第三个属性时,会发生多值依赖性。 多值依赖包含至少两个依赖于第三个属性的属性,这就是它总是需要至少三个属性的原因。 示例 :假设有一家自行车制造商公司每年生产两种颜色(白色和黑色)。 BIKE_MODEL MANUF_YEAR COLOR M2011 2008 White M2001 2008 Black M3001 2013 White M3001 2013

  • 问题内容: 当我尝试从报表参数传递多个值时,BIRT存在问题。 我正在使用BIRT 2.6.2和Eclipse。 我正在尝试从级联参数组的最后一个参数“ JDSuser”中放入多个值。该参数允许具有多个值,并且我正在使用列表框。 为了能够做到这一点,我正在用where-in语句编写我的sql查询,其中我用javascript替换了文本。否则BIRT sql无法从report参数获取多个值。 我的S