Django Recaptcha表单验证失败

时间:2020-06-24 05:30:46

标签: django web recaptcha recaptcha-v3

我正在Django应用程序上实现RecaptchaV3。 我目前正在按照github(https://github.com/kbytesys/django-recaptcha3)自述文件进行设置。

我有一个反馈表单,该表单发送包含主题和文本的电子邮件。

但是,当我以Django形式添加RecaptchaField时,POST请求不再在views.py中传递form.is_valid()。

有人对如何克服这个问题有想法/解决办法吗?

提前谢谢

forms.py

class contactForm(forms.Form):
name = forms.CharField(max_length=50, required=True, widget=forms.TextInput(attrs={'placeholder': 'Name (required)'}))
email = forms.EmailField(max_length=100, required=True, widget=forms.TextInput(attrs={'placeholder': 'Email (required)'}))
subject = forms.CharField(max_length=200, widget=forms.TextInput(attrs={'placeholder': 'Subject'}))
message= forms.CharField(max_length=1000, widget=forms.Textarea(attrs={'placeholder': 'Message'}))
captcha = ReCaptchaField()

views.py

def homepage(request):
    form = contactForm()
    if request.method == 'POST':
        form = contactForm(request.POST)
    
        if form.is_valid():
            print("form is valid")
        
    form = contactForm()
    return render(request, 'homepage/home.html', {'form':form, 'context':context,})

模板

<form class="form-horizontal" id="contactForm" method="POST" action="?">
           {% csrf_token %}
                        <div class="form-group">
                            <div class="form-group">
                                <label for="name">Your Name (required)</label><br>
                                {{ form.name }}
                            </div>
                            <div class="form-group">
                                <label for="email">Your Email (required)</label><br>
                                {{ form.email }}
                            </div>
                            <div class="form-group">
                                <label for="subject">Subject</label><br>
                                {{ form.subject }}
                            </div>
                            <div class="form-group">
                                <label for="message">Your Message</label><br>
                                {{ form.message }}
                            </div>
                        </div>
                        <button class="btn" type="submit">SEND</button>
                    </form>

在标题中,我已经添加

{% recaptcha_init %}
{% recaptcha_ready action_name='Homepage' %}

0 个答案:

没有答案