【问题标题】:How to add action and novalidate attribute to form tag using Crispy form如何使用 Crispy 表单将 action 和 novalidate 属性添加到表单标签
【发布时间】:2020-08-22 17:34:41
【问题描述】:

我正在使用 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-forms django-crispy-forms


【解决方案1】:

您可以将form_tag = false 添加到您的表单助手中。然后您可以手动将表单标签添加到您的模板中,以通过模板添加您的额外要求?

https://django-crispy-forms.readthedocs.io/en/latest/form_helper.html#formhelper-with-a-form-attached-default-layout

【讨论】:

    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2014-01-15
      • 1970-01-01
      • 1970-01-01
      • 2011-03-08
      • 2017-09-27
      • 1970-01-01
      • 2016-02-28
      • 1970-01-01
      • 2021-05-25
      相关资源
      最近更新 更多