未提交单个复选框表单。提交时还会收到MultiValueDictKeyError

时间:2020-02-24 07:28:12

标签: javascript python angularjs django

<body ng-app="">
{% extends "pmmvyapp/base.html" %}
{% load crispy_forms_tags %}
{% load static %}
{% block content%}
<div class="col-md-8">
  <form method="post" action="/personal_detail/">
  {% csrf_token %}
  <div class="form-group">
      <div class=" mb-4">
      <h6><u>Please Fill up the details below (Note that required field are marked by '*' )</u></h6>
    </div>
    <legend class="border-bottom mb-4" ,align="center">1.Beneficiary Details</legend>
    <label for="formGropuNameInput">Does Beneficiary have an Adhaar Card?*</label>
    <input type="radio" name="showHideExample" ng-model="showHideTest" value="true">Yes
    <input type="radio" name="showHideExample" ng-model="showHideTest" value="false">No
   <!--logic for yes-->
    <div ng-show="showHideTest=='true'">
      <div class="form-group">
        <label for="formGropuNameInput">Name of Beneficiary(as in Aadhar Card)*</label>
        <input name="bname" class="form-control" id="formGroupNameInput" placeholder="Enter name of Beneficiary as in Aadhar Card" required>
      </div>


      <div class="form-group">
        <label for="phone">Aadhaar Number(Enclose copy of Aadhaar Card)*:</label>
        <input name="aadharno" class="form-control" id="aadhar" name="aadhar"
               pattern="^\d{4}\s\d{4}\s\d{4}$"  placeholder="Enter Aadhar Card number with proper spacing"
               required>
      </div>
    </div>
    <!--logic for no-->
    <div ng-show="showHideTest=='false'">

      <div class="form-group">
        <label for="formGroupDistrict">Please provide any of the following Identity Card*:</label>
        <select name="idcard" id="formGroupDistrict" required>
          <option>Bank or Post Office photo passbook</option>
          <option>Voter ID Card</option>
          <option>Ration Card</option>
          <option>Kishan Photo Passbook</option>
          <option>Passport</option>
          <option>Driving License</option>
          <option>PAN Card</option>
          <option>MGNREGS Job Card</option>
          <option>Her husband's Employee Photo Identity Card issued by the government
           or any Public Sector Undertaking</option>
          <option>Any other Photo Identity Card issued by State Government or Union Territory Administrations</option>
          <option>Certificate of Identity with photograph issued by a Gazetted Officer on Official letterhead</option>
          <option>Health Card issued by Primary Health Centre(PHC) or Government Hospital</option>
          <option>Any other document specified by the State Government or Union Territory Adminstration</option>
        </select>
        </div>

        <div class="form-group">
          <label for="phone">Aadhaar Enrollment ID(EID):</label>

          <input name="eid" class="form-control" id="aadhar" name="aadhar"
                 placeholder="Enter Aadhar Enrollment ID">
        </div>


        <div class="form-group">        
          <label for="formGropuNameInput">Name of Beneficiary(as in Identity Card)* </label>
          <input name="bbname" class="form-control" id="formGroupNameInput" placeholder="Enter your name" required>
        </div>


        <div class="form-group">
          <label for="idno">Identity Number(Enclose Copy of Identity Card)*:</label>

          <input name="idno" id="identityno"  class="form-control"               
                 required>
        </div>
    </div>
 </div>


    <button type="submit" class="btn btn-primary" style="margin-bottom:10px ">Submit</button>
  </form>
</div>   
{% endblock %}
</body>

当我只填写“是”表格时,它不会提交,只有在我同时填写两个表格时也会提交,我得到一个

位于/ personal_detail /处的MultiValueDictKeyError 'adhaarno'

这是我的代码的views.py

views.py

def ApplyOnline(request):
    return render(request,'users/applyonline.html')

def personal_detail(request):
    bname=request.POST['bname']
    adhaarno=request.POST['adhaarno']
   # adhaarcopy =request.POST['adhaarcopy']

    idcard=request.POST['idcard']
    eid=request.POST['eid']    
    bbname=request.POST['bname']
    idno=request.POST['idno']
   # idcopy=request.POST['idcopy']
    apply_online = Personal_Detail(bname=bname,adhaarno=adhaarno,
    idcard=idcard,eid=eid,bbname=bbname,idno=idno)
    apply_online.save()
    return render(request,'users/applyonline.html')

我已经创建了模型,对于yes形式名称,我将名称命名为bname,对于no形式名称将其命名为bbname。 models.py

class Personal_Detail(models.Model):
    bname=models.CharField(max_length=30)
    adhaarno=models.IntegerField()
    adhaarcopy = models.ImageField(upload_to='adhaar/')

    idcard=models.TextField()
    eid=models.IntegerField()    
    bbname=models.CharField(max_length=30)
    idno=models.IntegerField()
    idcopy=models.ImageField(upload_to='identitycard/')

    def __str__(self):
        return self.bname

我认为问题是由于复选框造成的,这就是为什么我得到MultiValueDictKeyError的原因。另外,我应该怎么做,以便只有一个表单部分,例如我仅填写提交的yes表单,而现在我需要同时填写两者表格。

1 个答案:

答案 0 :(得分:0)

使用copyFloatPrice指令:

ng-if

<!--logic for yes--> ̶<̶d̶i̶v̶ ̶n̶g̶-̶s̶h̶o̶w̶=̶"̶s̶h̶o̶w̶H̶i̶d̶e̶T̶e̶s̶t̶=̶=̶'̶t̶r̶u̶e̶'̶"̶>̶ <div ng-if="showHideTest=='true'"> <!-- ... --> </div> <!--logic for no--> ̶<̶d̶i̶v̶ ̶n̶g̶-̶s̶h̶o̶w̶=̶"̶s̶h̶o̶w̶H̶i̶d̶e̶T̶e̶s̶t̶=̶=̶'̶f̶a̶l̶s̶e̶'̶"̶>̶ <div ng-if="showHideTest=='false'"> <!-- ... --> </div> 指令添加和删除DOM。 ng-if指令仅更改CSS的可见性。


更新

提交时出现MultiValueDictKeyError怎么样?

错误

ng-show

<div class="form-group"> <label for="phone">Aadhaar Number(Enclose copy of Aadhaar Card)*:</label> <input name="aadharno" class="form-control" id="aadhar" name="aadhar" pattern="^\d{4}\s\d{4}\s\d{4}$" placeholder="Enter Aadhar Card number with proper spacing" required> </div> 元素具有两个<input>属性。

检查HTML中是否有其他重复属性。

相关问题