首页 > 解决方案 > 如何使用 Crispy 表单将 action 和 novalidate 属性添加到表单标签

问题描述

我正在使用 Django 构建一个应用程序。对于表单,我使用 Crispy forms 包来呈现表单。

在模板中,我呈现这样的表单

{% crispy form %}

我得到这个结果:

<form method="post">
 <input type="hidden" name="csrfmiddlewaretoken" value="..."> 
 <div id="div_id_city" class="form-group">
   <label for="id_city" class=" requiredField">
   City<span class="asteriskField">*</span> </label> 
   <div class=""> <input type="text" name="city" maxlength="255" class="textinput textInput form-control" required="" id="id_city"> </div>
 </div>
 <div class="form-row form-row">
   <div class="from-group col-xs-12 col-md-6">
     <div id="div_id_energy_cons_before" class="form-group">
       <label for="id_energy_cons_before" class=" requiredField">
       Energy consumption before intervention<span class="asteriskField">*</span> </label> 
       <div class=""> <input type="number" name="energy_cons_before" step="any" class="numberinput form-control" required="" id="id_energy_cons_before"> </div>
     </div>
   </div>
   <div class="form-group col-xs-12 col-md-6">
     <div id="div_id_energy_cons_after" class="form-group">
       <label for="id_energy_cons_after" class=" requiredField">
       Energy consumption after intervention<span class="asteriskField">*</span> </label> 
       <div class=""> <input type="number" name="energy_cons_after" step="any" class="numberinput form-control" required="" id="id_energy_cons_after"> </div>
     </div>
   </div>
 </div>
   <input type="submit" name="submit" value="Save" class="btn btn-primary btn btn-primary" id="submit-id-submit">
 </div>
</form>

我想知道如何向标签添加actionnovalidate属性。form

注意:我知道还有其他方法可以使用 Crispy 表单呈现表单。但我想使用这种方法,因为我在form.py我的表单布局(使用 Crispy 表单布局)中定义了如下内容:

class ExampleForm(forms.Form):
   [...]
   def __init__(self, *args, **kwargs):
       super().__init__(*args, **kwargs)
       self.helper = FormHelper()
       self.helper.layout = Layout(
           'city',
           Row(
               Column('energy_cons_before', css_class='from-group col-md-6'),
               Column('energy_cons_after', css_class='form-group col-md-6'),
               css_class='form-row',
           ),
           ...
           Submit('submit', 'Submit', css_class='button white')
       )

我可以尝试什么来解决这个问题?

标签: django-formsdjango-crispy-forms

解决方案


在您的 ExampleForm 中,您可以尝试:

   self.helper.attrs = {"novalidate": ''}
   self.helper.form_tag = True

推荐阅读