为了账号安全,请及时绑定邮箱和手机立即绑定

Django-recaptcha 总是显示“此字段为必填项”。甚至坚韧它在那里

Django-recaptcha 总是显示“此字段为必填项”。甚至坚韧它在那里

潇湘沐 2023-05-09 15:22:15
我正在尝试在我的一个项目中使用 Recaptcha v3。不幸的是, form.valid_date() 方法总是失败,并显示“此字段为必填项。”。运行 django-recaptcha。forms.py 看起来像这样:class AccountForm(forms.ModelForm):    # adding some default validators    phone = forms.CharField(validators=[MinLengthValidator(10)], error_messages={'invalid':_("Please add a valid phone number.")})    terms = forms.BooleanField()    captcha = ReCaptchaField(        public_key=settings.RECAPTCHA_PUBLIC_KEY,        private_key=settings.RECAPTCHA_PRIVATE_KEY,        widget=ReCaptchaV3(            attrs={                'required_score': 0.85,            }        )    )    class Meta:        model = Account        fields = ['phone', 'terms']    def clean_phone(self):        data = self.cleaned_data['phone']        if not validate_phone(data):            raise forms.ValidationError(_("Please add a valid phone number. "))        return data    def clean_terms(self):        data = self.cleaned_data['terms']        if not True:            raise forms.ValidationError(_("Please accept the T&Cs"))        return dataviews.py 看起来像这样:def register_web(request: object) -> object:    key = request.GET.get('key', '')    merchant = request.GET.get('merchant', '')    if request.method == 'POST':        print(form.is_valid())        print(form.errors)        if form.is_valid():            phone = phone_filter(str(request.POST.get('phone')).replace(' ', ''))            name = request.POST.get('name', '')            confirmationForm = ConfirmationForm()            return render(request, 'registerWebConfirmation.html', {'context':context })        else:                        return render(request, 'registerWeb.html', {'form': form})    else:        return render(request, 'registerWeb.html', {'form': form})views.py 中的打印说明:False<ul class="errorlist"><li>captcha<ul class="errorlist"><li>This field is required.</li></ul></li></ul>
查看完整描述

1 回答

?
慕仙森

TA贡献1827条经验 获得超7个赞

我试图复制你的问题,正如你所说,表单is_valid()总是返回False错误This field is required.

但是在我注册了ReCaptcha并将RECAPTCHA_PUBLIC_KEY和更改RECAPTCHA_PRIVATE_KEY为正确的值后,错误消失并form.is_vaild()返回True.

我假设您没有为这些配置使用实际值并更改它来解决您的问题。或者,也许您确实输入了实际值,但仍然出现错误。然后我建议仔细检查这些值。一定有错别字。


查看完整回答
反对 回复 2023-05-09
  • 1 回答
  • 0 关注
  • 127 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信