mpa*_*paf 8 django django-crispy-forms
我正在使用bootstrap3作为django_crispy_forms中的默认模板包,并尝试使用crispy标签呈现表单:
{% crispy form %}
Run Code Online (Sandbox Code Playgroud)
我的表单类具有以下帮助器属性:
class TheForm(forms.Form):
adv_var = forms.CharField(label="variable", max_length=70)
value = forms.FloatField()
def __init__(self, *args, **kwargs):
super(TheForm, self).__init__(*args, **kwargs)
self.helper = FormHelper()
self.helper.form_method = 'post'
self.helper.form_class = 'form-inline'
self.helper.field_template = 'bootstrap3/layout/inline_field.html'
self.helper.layout = Layout(
'adv_var', 'value',
ButtonHolder(
Submit('submit', 'Start', css_class='button white')
)
)
Run Code Online (Sandbox Code Playgroud)
发布带有错误的表单时,即使我可以在视图中打印form._errors并查看错误列表,重新呈现模板也不会显示错误.
如果我将helper.field_template更改为另一个值(或删除它以设置默认值),错误将显示在每个字段上方 - 但我不再获得内联显示.
我如何使用django-crispy-forms在单独的div中显示此表单的所有错误?
小智 3
当表单出现验证错误时,我们使用 django.contrib.messages 推送通用错误字符串,并保留字段错误以进行内联渲染:
from django.contrib import messages
# ...
if not form.is_valid():
messages.error(request, "Please correct the errors below and resubmit.")
return render(request, template, context)
Run Code Online (Sandbox Code Playgroud)
然后,我们使用引导警报来显示所有消息,包括我们的一般错误,尽管您当然可以根据需要对其进行标记。
但是,如果您只想将错误移至单独的块中,请将它们添加到您的请求上下文中:
from django.contrib import messages
# ...
if not form.is_valid():
context['form_errors'] = form.errors
return render(request, template, context)
Run Code Online (Sandbox Code Playgroud)
并在您的模板中:
{% crispy form %}
<div id='form-errors'>{{ form_errors }}</div>
Run Code Online (Sandbox Code Playgroud)
然后,您可以调整脆皮表单的辅助属性和样式来控制内联错误的显示。
归档时间: |
|
查看次数: |
8644 次 |
最近记录: |