有没有办法在字典中获取在 django 表单验证期间生成的表单错误(键为“field_name”,值为“与其相关的错误列表”),而不是它生成的默认 HTML 代码(ul & li 组合)。我没有使用生成的 HTML 代码,我只是担心字段名称和错误。
问问题
6385 次
4 回答
8
于 2018-07-18T11:36:22.620 回答
3
当然。我在做 Ajaxed 的表单时经常使用这个类,我需要返回 JSON。根据需要调整/改进。在某些情况下,您可能希望返回以 JSON 编码的 HTML,因此我将去除 HTML 标记作为选项传递。
from django import forms
from django.template.defaultfilters import striptags
class AjaxBaseForm(forms.BaseForm):
def errors_as_json(self, strip_tags=False):
error_summary = {}
errors = {}
for error in self.errors.iteritems():
errors.update({error[0]: unicode(striptags(error[1])
if strip_tags else error[1])})
error_summary.update({'errors': errors})
return error_summary
用法:
# forms.py
class MyForm(AjaxBaseForm, forms.Form): # you can also extend ModelForm
...
# views.py
def my_view(request):
form = MyForm(request.POST or None)
if request.method == 'POST':
if form.is_valid():
...
else:
response = form.errors_as_json(strip_tags=True)
return HttpResponse(json.dumps(response, ensure_ascii=False),
content_type='application/json')
于 2013-08-07T18:16:40.117 回答
2
通话dict()
对我有用:
print(dict(form.errors))
我更喜欢这种技术,因为as_json()
将特殊字符转换为 Unicode 转义序列。
于 2019-10-28T13:39:50.400 回答
1
在视图中,您可以这样做:
f = FooForm(data)
f.errors
于 2013-08-07T18:09:19.623 回答