以 django 形式包含验证码

Dev*_*012 7 python django recaptcha

我正在尝试将验证码添加到我的 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
Run Code Online (Sandbox Code Playgroud)

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

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

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

c.g*_*rey 13

您可以使用django-simple-captach

  1. 只需安装它

    pip install  django-simple-captcha
    
    Run Code Online (Sandbox Code Playgroud)
  2. 将验证码添加到 settings.py 中的 INSTALLED_APPS
  3. 运行 python manage.py migrate
  4. 在 urls.py 中添加一个条目:

    urlpatterns += [
        path(r'captcha/', include('captcha.urls')),
    ]
    
    Run Code Online (Sandbox Code Playgroud)

在forms.py中

from django import forms
from captcha.fields import CaptchaField

class YourForm(forms.Form):
    captcha = CaptchaField()
Run Code Online (Sandbox Code Playgroud)

在模板中

<form action="/your-name/" method="post">
   {% csrf_token %}
   {{ form.captcha }}
   <input type="submit" value="Submit">
</form>
Run Code Online (Sandbox Code Playgroud)

希望能帮助到你