有没有办法在字典中获取django表单验证期间生成的表单错误(键为'field_name',值为'与其相关的错误列表'),而不是它生成的默认HTML代码(ul& li组合)。我没有使用生成的HTML代码,我只是对字段名称和错误感到困扰。
答案 0 :(得分:3)
不确定。我在执行Ajax的表单时经常使用这个类,而我需要返回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')
答案 1 :(得分:1)
在视图中,您可以执行此操作:
f = FooForm(data)
f.errors
答案 2 :(得分:1)
没有内置的用于返回错误的方法,例如DATA <- data.frame("Col.A" = c("Some Text", "Some other text", "Yes", "No", "no",
NA, "No", "Yes", "yes", NA, NA, NA), "Col.B" = c(NA, NA, "Green", NA, NA, NA, NA,
"Blue", "Blue 2", NA, NA, NA),stringsAsFactors = FALSE)
DATA$newCol.B <- ifelse((DATA$Col.A == "Yes" | (DATA$Col.A == "yes") |
(DATA$Col.A == "No") | (DATA$Col.A == "no")) , DATA$Col.B, DATA$Col.A)
DATA
#> Col.A Col.B newCol.B
#> 1 Some Text <NA> Some Text
#> 2 Some other text <NA> Some other text
#> 3 Yes Green Green
#> 4 No <NA> <NA>
#> 5 no <NA> <NA>
#> 6 <NA> <NA> <NA>
#> 7 No <NA> <NA>
#> 8 Yes Blue Blue
#> 9 yes Blue 2 Blue 2
#> 10 <NA> <NA> <NA>
#> 11 <NA> <NA> <NA>
#> 12 <NA> <NA> <NA>
,但是您可以使用json。
dict
doc for form = MyForm(data)
print(form.errors.as_json())
答案 3 :(得分:0)
致电.row {
display: flex
}
对我有用:
dict()
我更喜欢这种技术,因为print(dict(form.errors))
将特殊字符转换为Unicode转义序列。