处理form.save()
上的错误的最佳实践是什么?例如,电子邮件唯一检查将在数据库级别的保存中完成,而不是在is_valid()
上进行。
def user_registration(request):
from accounts.forms import UserRegistrationForm
form = UserRegistrationForm(request.POST)
if not form.is_valid():
return {
'errors': form.errors.as_json(escape_html=False)
}
### This can still return error, how to handle it? try catch?
user = form.save()
return {
'user': user.id,
}
答案 0 :(得分:1)
理想情况下,表单类上应该有clean_email
方法来检查电子邮件是否已经存在。完成所有验证后,应调用save
方法。
答案 1 :(得分:0)
在进行表单验证之前先捕获电子邮件。您可以做类似的事情
if request.method == 'POST':
email = request.POST.get("email")
if User.objects.filter(email__iexact=email).exists():
form.add_error("email","Email exists")
if not form.is_valid():
return {
'errors': form.errors.as_json(escape_html=False)
}
user = form.save()