如何添加" *必填字段。"所有表格中包含必填字段的邮件?

时间:2014-06-17 10:38:40

标签: python django django-forms twitter-bootstrap-3 django-crispy-forms

我使用带有CRISPY_TEMPLATE_PACK = 'bootstrap3'的django-crispy-forms。我的模板看起来像这样(这是注册表单的一个示例,但我的模板中有很多表单):

{% load crispy_forms_tags %}

<h1>Sign up</h1>
<form action="/accounts/signup/" method="POST" role="form">
    {% csrf_token %}
    {{ form|crispy }}
    <button type="submit" class="btn btn-primary">Sing up</button>
</form>

在渲染页面中,必填字段正确显示,并在其附近显示*,表示它们是必需的,但不会显示消息,说明*表示的含义。

在我的情况下,我处理的用户有时候并不是非常技术性的,所以他们可能不知道什么是*的意思。我想在所有表单的顶部显示一条* required field.消息,其中包含必填字段。

我可以在每个表单的开头添加<p>* required field.</p>行,但我想知道是否有更优雅和干燥的方式来执行此操作。

谢谢!

3 个答案:

答案 0 :(得分:1)

根据django crispy表单文档: https://django-crispy-forms.readthedocs.org/en/latest/crispy_tag_forms.html#change-required-fields

你需要覆盖字段模板,这是你唯一的选择,除非你使用css hack(也许是:之前和之后的asterisk元素)。

您的另一个选择是使用HTML crispy表单元素,在表单顶部发出通知:

HTML('<strong>Fields marked with * are required</strong>')

答案 1 :(得分:1)

一种解决方案是添加&lt; p class =&#34; req_legend&#34; style =&#34; display:none;&#34;&gt; * required field。&lt; / p&gt;到每个表单并添加一个js,如果找到必需的字段,它将更改其显示属性。 这是一个jquery示例:

$(document).ready(function() {
  if ($('.requiredField').length > 0) {
    $('p.req_legend').show();
  }
});

或者去完整的javascript并添加&lt; p&gt;如果您找到requiredField,则只能将元素添加到您的元素中,您可以在添加到表单的Media类的javascript中执行此操作

答案 2 :(得分:1)