我正在尝试在我的一个项目中使用 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
.
我假设您没有为这些配置使用实际值并更改它来解决您的问题。或者,也许您确实输入了实际值,但仍然出现错误。然后我建议仔细检查这些值。一定有错别字。
添加回答
举报
0/150
提交
取消