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

我正在尝试在我的一个项目中使用 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 data

views.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>



潇湘沐
浏览 84回答 1
1回答

慕仙森

我试图复制你的问题,正如你所说,表单is_valid()总是返回False错误This field is required.但是在我注册了ReCaptcha并将RECAPTCHA_PUBLIC_KEY和更改RECAPTCHA_PRIVATE_KEY为正确的值后,错误消失并form.is_vaild()返回True.我假设您没有为这些配置使用实际值并更改它来解决您的问题。或者,也许您确实输入了实际值,但仍然出现错误。然后我建议仔细检查这些值。一定有错别字。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python