简体   繁体   English

Django - MultiValueDictKeyError 请求.POST

[英]Django - MultiValueDictKeyError request.POST

Im getting MultiValueDictKeyError on my update view, when i add i can add successfully but when i want to update i get this error.我在更新视图中收到 MultiValueDictKeyError,当我添加时我可以成功添加但是当我想更新时我收到此错误。 I used the same codes by duplicating 4 times, but this time I could not understand why I am having an error.我通过复制 4 次使用相同的代码,但这次我不明白为什么我有错误。

models.py;模型.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- update def 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; 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>

Try to use the MultiValueDict's get this will help to prevent any default if does not exist.尝试使用 MultiValueDict 的get这将有助于防止任何不存在的默认值。 So replace request.POST('your value') with request.POST.get('your value'), False .因此,将request.POST('your value')替换为request.POST.get('your value'), False The general rule is dict.get(<key>, <default>) ONe instance in your code would be:一般规则是dict.get(<key>, <default>)代码中的一个实例是:

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

And do that for the other value as well.并为其他值也这样做。

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM