我使用带有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>
行,但我想知道是否有更优雅和干燥的方式来执行此操作。
谢谢!
答案 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)
您可以使用自定义模板覆盖uni_form.html
模板。