【问题标题】:Django forms: error not displaying in jsonDjango 表单:错误未在 json 中显示
【发布时间】:2020-01-19 03:42:02
【问题描述】:

我正在尝试使用内置验证器设置我在 Django 中忘记的密码,但如果重现错误我没有得到任何响应,但它应该显示其他类的错误,我该如何解决这个问题?

forms.py

class RestorePasswordForm(SetPasswordForm):
    new_password1 = forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control','placeholder':'Password','required': True}))
    new_password2 = forms.CharField(widget=forms.PasswordInput(attrs={'class':'form-control','placeholder':'Password','required': True}))

观看次数

  def post(self, request,token):
    form = RestorePasswordForm(request.POST)
    if form.is_valid():
      obj = token(token)
      if obj:
        this_user = User.objects.get(id=obj.email_id)
        if not this_user:
          return False
        this_user.set_password(request.POST.get('new_password2'))
        this_user.save()
        obj.token = None
        obj.save()
    return JsonResponse({"message":form.errors})

浏览器响应显示 {"message": {}}

【问题讨论】:

    标签: django django-forms


    【解决方案1】:

    当您验证表单时,您应该始终检查它是否正在发布,然后只处理它。 'forms.errors' 也会给你 HTML 字符串,但你已经知道了。
    你得到空的原因是因为没有任何东西发布到表单中。

    def post(self, request,token):
        if request.method=="POST":
            form = RestorePasswordForm(request.POST)
            if form.is_valid():
            obj = token(token)
            if obj:
                this_user = User.objects.get(id=obj.email_id)
                if not this_user:
                  return False
                this_user.set_password(request.POST.get('new_password2'))
                this_user.save()
                obj.token = None
                obj.save()
          else:
               print("you didn't post anything to form")
        return JsonResponse({"message":form.errors})
    

    【讨论】:

      猜你喜欢
      • 2012-04-05
      • 2017-10-20
      • 2013-09-27
      • 2021-07-28
      • 2019-10-29
      • 2014-03-13
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多