【问题标题】:Django - MultiValueDictKeyError request.POSTDjango - MultiValueDictKeyError request.POST
【发布时间】:2021-10-05 09:48:49
【问题描述】:

我在更新视图上收到 MultiValueDictKeyError,当我添加时我可以成功添加,但是当我想要更新时,我得到了这个错误。我重复了 4 次使用相同的代码,但这次我不明白为什么会出错。

models.py;

class problemduyuru(models.Model):
    olusturulmatarihi = models.TextField(max_length=100, null=True)
    duyurutipi = models.TextField(max_length=100, null=True)
    incidentno = models.TextField(max_length=100, null=True)
    baslangiczamani = models.TextField(max_length=100, null=True)
    aciklama = models.TextField(max_length=100, null=True) 

views.py-更新定义

def problemduyurusuupdate(request, id):
    problemmember = problemduyuru.objects.get(id=id)
    problemmember.duyurutipi = request.POST['duyurutipi']
    problemmember.incidentno = request.POST['incidentno']
    problemmember.baslangiczamani = request.POST['baslangiczamani']
    problemmember.aciklama = request.POST['aciklama']
    problemmember.olusturulmatarihi = request.POST['olusturulmatarihi']
    problemmember.save()
    messages.success(request, 'Alarmlar was updated successfully!')
    return redirect('/problemduyurusu')

html;

<form class="form-horizontal" action="problemduyurusuupdate/{{ problemmembers.id }}" method="POST">
    {% csrf_token %}
    <div class="bd-callout bd-callout-danger">
      <div class="bd-calloutic bd-callout-dangeric ">
      <div class="dangericon"></div>
    <h4 id="asynchronous-methods-and-transitions" style="color: #e70800;"><b>Technology Announcements</b></h4>
    <h7 id="asynchronous-methods-and-transitions" style="color:red; font-weight: 400; ">Problem Duyurusu</h7></div>
    
<div class="input-group mb-3">
  <div class="input-group-prepend">
    <span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Duyuru Tipi:</span>
  </div>
  <input type="text" class="form-control" value="{{ problemmembers.duyurutipi }}" name="dduyurutipi" id="dduyurutipi" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
<div class="input-group mb-3">
  <div class="input-group-prepend">
    <span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Incident No:</span>
  </div>
  <input type="text" class="form-control" value="{{ problemmembers.incidentno }}" name="dincidentno" id="dincidentno" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
<div class="input-group mb-3">
  <div class="input-group-prepend">
    <span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Başlangıç Zamanı:</span>
  </div>
  <input type="text" class="form-control" value="{{ problemmembers.baslangiczamani }}" name="dbaslangiczamani" id="dbaslangiczamani" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
<div class="input-group mb-3">
  <div class="input-group-prepend">
    <span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Oluşturma Tarihi:</span>
  </div>
  <input type="text" class="form-control" value="{{ problemmembers.olusturulmatarihi }}" name="dolusturulmatarihi" id="dolusturulmatarihi" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
<div class="input-group mb-3">
  <div class="input-group-prepend">
    <span class="input-group-duyuru" id="inputGroup-sizing-default" style="font-weight: 500;">Açıklama:</span>
  </div>
  <input type="text" class="form-control" value="{{ problemmembers.aciklama }}" name="daciklama" id="daciklama" aria-label="Default" aria-describedby="inputGroup-sizing-default">
</div>
    <br>
  </div>

【问题讨论】:

  • 这是一个简单的拼写错误,在视图中您查找baslangiczamani,但在模板中您使用dbaslangiczamani 作为输入名称(开头多一个“d”)
  • 我多么愚蠢,非常感谢你,问题已解决@IainShelvington

标签: python django


【解决方案1】:

尝试使用 MultiValueDict 的 get 这将有助于防止任何默认值(如果不存在)。所以将request.POST('your value') 替换为request.POST.get('your value'), False。一般规则是dict.get(&lt;key&gt;, &lt;default&gt;) 您的代码中的一个实例是:

problemmember.duyurutipi = request.POST.get('duyurutipi', False)

对其他值也这样做。

【讨论】:

    猜你喜欢
    • 2015-08-22
    • 2020-05-24
    • 1970-01-01
    • 2014-06-25
    • 1970-01-01
    • 2012-09-18
    • 1970-01-01
    • 1970-01-01
    • 2020-01-13
    相关资源
    最近更新 更多