首页 > 解决方案 > 以 django 形式包含验证码

问题描述

我正在尝试将验证码添加到我的 Django 表单中。我尝试了三个不同的库,但没有一个对我有用,我不知道我做错了什么。这是我最后一次尝试:

我使用了这个库。我的forms.py样子是这样的:

class NewUserForm(UserCreationForm):
    email = forms.EmailField(required=True)
    captcha = NoReCaptchaField()

    class Meta:
        model = User
        fields = ("username", "email", "password1", "password2")

    def save(self, commit=True):
        user = super(NewUserForm, self).save(commit=False)
        user.email = self.cleaned_data['email']
        if commit:
            user.save()
        return user

这是urls.pypath("login/", views.login_request, name="login")

这是前端login.html::<script src="https://www.google.com/recaptcha/api.js" async defer></script>

我更新了我的settings.py文件,所以错误一定不存在。

标签: pythondjangorecaptcha

解决方案


您可以使用django-simple-captcha

  1. 安装它
pip install  django-simple-captcha
  1. INSTALLED_APPS在您的 settings.py 中添加验证码
  2. python manage.py migrate
  3. 在 urls.py 中添加一个条目:
urlpatterns += [
       path(r'captcha/', include('captcha.urls')),
    ]

在forms.py中:

from django import forms
from captcha.fields import CaptchaField
    
class YourForm(forms.Form):
    captcha = CaptchaField()

在模板中:

<form action="/your-name/" method="post">
   {% csrf_token %}
   {{ form.captcha }}
   <input type="submit" value="Submit">
</form>

推荐阅读