我正在嘗試在我的一個項目中使用 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條經驗 獲得超8個贊
我試圖復制你的問題,正如你所說,表單is_valid()
總是返回False
錯誤This field is required.
但是在我注冊了ReCaptcha并將RECAPTCHA_PUBLIC_KEY
和更改RECAPTCHA_PRIVATE_KEY
為正確的值后,錯誤消失并form.is_vaild()
返回True
.
我假設您沒有為這些配置使用實際值并更改它來解決您的問題?;蛘?,也許您確實輸入了實際值,但仍然出現錯誤。然后我建議仔細檢查這些值。一定有錯別字。
添加回答
舉報
0/150
提交
取消