在提交前用JavaScript检查Django表单错误的最佳方法是什么?

3

实际上我需要一种方法,使JavaScript验证(客户端)和我的Django表单验证(服务器端)具有相同的错误消息。

我搜索了任何Django库,但没有找到任何信息。这是我在SO中发现的最相关的问题,但似乎并不有用:

Django Javascript form validation

您是否知道任何适用于此目的的Django库?如果没有,那么最好的方法是什么?

提前感谢。


为什么要让JavaScript去做那件事情,当表单已经为你完成得很好了呢?你可以使用jQuery的验证插件来实现。 - karthikr
这对用户更方便(因为提交后再检查是昂贵的)。 - Ali
基本上,您可以使用像 http://jqueryvalidation.org/ 这样的 jQuery 插件,在提交之前验证表单字段。 - karthikr
为什么不直接使用HTML5验证呢?它非常好用,这样你几乎不必处理错误的输入。 - Games Brainiac
很不幸,HTML5验证(用“pattern”属性)不能与文本区域一起使用... - ThePhi
1个回答

1
我找不到任何现有的库可以轻松地完成这个任务,所以我使用了一个解决方法。
Django表单错误以列表格式呈现。将Django中的字典列表传输到JS中很困难。我有一个有用的函数,名为(convertErrorsToDict),它将每个参数的所有错误连接在一起形成一个错误。

views.py:

def convertErrorsToDict(errors): #previously errors={f1:[er1]}. make it {f1:'er1'} so we can render nicely
    #converts form errors from list to dictionary
    errors2={}
    for f in errors:
        errors2[f]='.'.join(errors[f])
    return (errors2)


def setPassword(request):
    your_form=FormName();
    context={}
    errors=convertErrorsToDict(your_form.errors)
    context['errors']=errors;
    return render(request,'htmlFileName.html',context)

FileName.html:

{% load jsonify %}
<script type="text/javascript">
    var errors={{errors|jsonify}};    
</script>

FileName.js 在js文件中,我们现在可以直接将errors用作变量。

console.log(errors.para1) //para1 is first para in the form. eg first_name
console.log(errors.para2) 

这个功能非常有用,当我们需要完全控制表单错误内容时使用。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接