如何在模板中格式化 django form.non_field_errors.as_text 而不将它们作为无序列表或*
附加到前面?
{{ form.non_field_errors.as_text }}
*
在文本前面显示错误。
这张django 票也有助于解释为什么*
不会被删除,但这对我没有帮助。我不想要了*
。
{{ form.non_field_errors }} 和 {{ form.non_field_errors.as_ul }} 都显示为无序列表,我不想要无序列表。
如何在模板中格式化 django form.non_field_errors.as_text 而不将它们作为无序列表或*
附加到前面?
{{ form.non_field_errors.as_text }}
*
在文本前面显示错误。
这张django 票也有助于解释为什么*
不会被删除,但这对我没有帮助。我不想要了*
。
{{ form.non_field_errors }} 和 {{ form.non_field_errors.as_ul }} 都显示为无序列表,我不想要无序列表。
{% for error in form.non_field_errors %}
{{error}}
{% endfor %}
当您将错误列表作为文本调用时,它会尝试将其显示为列表。只需遍历列表以自行获取错误,以便您可以应用自己的样式。
有关它的更多信息,请访问 django 项目网站
迭代form.non_field_errors
并不总是最好的方法,例如,在我的情况下,我想使用Django Widget Tweaks在相关字段旁边显示此屏幕截图中的工具提示。
项目/应用程序/模板/模板.html
{% render_field field class="form-control is-invalid" data-toggle="tooltip" title=field.errors.as_text %}
我没有乱用模板代码来一次性传递 HTMLtitle
属性,而是按照@oblalex的提示编写了我自己的修改ErrorList
类,并使用了一个as_text
不带星号的方法。
项目/应用程序/utils.py
from django.forms.utils import ErrorList
class MyErrorList(ErrorList):
"""
Modified version of the original Django ErrorList class.
ErrorList.as_text() does not print asterisks anymore.
"""
def as_text(self):
return '\n'.join(self)
现在该as_text()
函数已被覆盖,您可以将您的类MyErrorList
作为您的or或类似的error_class
参数传递给我的一些表单集:Form
ModelForm
ModelForm
项目/应用程序/views.py
from django.forms import formset_factory
from .forms import InputForm
from .utils import MyErrorList
def yourView(request):
InputFormSet = formset_factory(InputForm)
formset = InputFormSet(error_class=MyErrorList)
context = {'formset': formset}
return render(request, 'template.html', context)
error_class
而不是每次在视图中实例化表单时都传递,您可以将此单线添加到您的表单类中(请参阅@Daniel的此答案):
项目/应用程序/forms.py
from django import forms
from .utils import MyErrorList
class InputForm(forms.ModelForm):
def __init__(self, *args, row, **kwargs):
super(InputForm, self).__init__(*args, **kwargs)
self.error_class = MyErrorList