python - 以 django 形式包含验证码

标签 python django recaptcha

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

我用了this图书馆。 我的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.py : path("login/", views.login_request, name="login") .

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

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

最佳答案

您可以使用 django-simple-captcha .

  1. 安装
pip install  django-simple-captcha
  1. 将验证码添加到您的 settings.py 中的 INSTALLED_APPS
  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>

关于python - 以 django 形式包含验证码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54888907/

相关文章:

python - 傅里叶变换 (np.fft) 结果中出现意外相移

c# - 如何在 c# Selenium 中查找 reCAPTCHA 元素并单击它

android - Google reCaptcha 不会在真实设备上显示验证码挑战对话框

python - Django-从子查询中注释多个字段

python - 从列表中删除数字而不更改总和

python-3.x - 如何将最新 (2020) Django 安装到 AWS EC2 Linux 2 实例并使用 Apache Hello World 服务

python - Django 元类访问外部属性

python - 查看 "add product"- 不起作用

javascript - recaptcha 在 Vue 组件中不起作用。当 grecaptcha 未加载时,give grecaptcha.render 不是函数

python - pyspark 根据两列中的数据创建字典