and*_*guy 6 django django-forms
我需要提取消息和字段。
例如,我有这个 django 表单错误结果
<ul class="errorlist">
<li>__all__
<ul class="errorlist nonfield">
<li>Pointofsale with this Official receipt and Company already exists.</li>
</ul>
</li>
</ul>
Run Code Online (Sandbox Code Playgroud)
从这段代码的输出
def post_sale(request):
sale_form = request["data"]
if sale_form.is_valid():
save_form.save()
else:
print save_form.errors
Run Code Online (Sandbox Code Playgroud)
但是我需要实现的是获取没有标签的消息,所以我可以只以纯字符串/文本形式返回这些消息。
def post_sale(request):
sale_form = request["data"]
if sale_form.is_valid():
save_form.save()
else:
# This is just pseudo code
for field in save_form.errors:
field = str(field["field"})
message = str(field["error_message"])
print "Sale Error Detail"
print field
print message
error_message = { 'field':field,'message':message }
error_messages.append(error_message )
Run Code Online (Sandbox Code Playgroud)
输出将是:
Sale Error Detail
(the field where form error exists)
Pointofsale with this Official receipt and Company already exists.
Run Code Online (Sandbox Code Playgroud)
谢谢,请告诉我是否有问题或需要澄清的地方,以便我可以修复它。
errors绑定表单的属性将包含该表单引发的所有错误,作为字典。键是一个字段或其他特殊值(例如__all__),值是一个或多个错误的列表。
这是一个关于它如何工作的简单示例:
>>> from django import forms
>>> class MyForm(forms.Form):
... name = forms.CharField()
... email = forms.EmailField()
...
>>> f = MyForm() # Note, this is an unbound form
>>> f.is_valid()
False
>>> f.errors # No errors
{}
>>> f = MyForm({}) # Now, the form is bound (to an empty dictionary)
>>> f.is_valid()
False
>>> f.errors # dictionary of errors
{'name': [u'This field is required.'], 'email': [u'This field is required.']}
Run Code Online (Sandbox Code Playgroud)
在您看来,根据您的需要,您可以只返回 的值form.errors,或将其解析为您需要的任何结构。
for field, errors in form.errors.items():
print('Field: {} Errors: {}'.format(field, ','.join(errors))
Run Code Online (Sandbox Code Playgroud)
对于您提到的特定错误,它是由于覆盖该clean()方法而引发的自定义错误- 这就是为什么它列在特殊标识符下__all__而不是在特定字段下。
这在表单参考中提到,在验证下:
请注意,您的
Form.clean()覆盖引发的任何错误都不会与任何特定字段相关联。它们进入一个特殊的“字段”(称为__all__),non_field_errors()如果需要,您可以通过方法访问它 。如果要将错误附加到表单中的特定字段,则需要调用add_error().
| 归档时间: |
|
| 查看次数: |
2739 次 |
| 最近记录: |