代码之家  ›  专栏  ›  技术社区  ›  EralpB

Django Form Save Error After is ou valid返回true

  •  0
  • EralpB  · 技术社区  · 6 年前

    处理错误的最佳实践是什么 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,
        }
    
    2 回复  |  直到 6 年前
        1
  •  1
  •   Mohit Solanki MatúÅ¡ Bartko    6 年前

    理想情况下,应该有 clean_email 方法来检查电子邮件是否已存在。 save 方法应在所有验证完成后调用。

        2
  •  0
  •   Lemayzeur    6 年前

    在表单验证之前捕获电子邮件。你可以做一些像

    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()