python - 以 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.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。
- 安装它
pip install django-simple-captcha
INSTALLED_APPS
在您的 settings.py 中添加验证码- 跑
python manage.py migrate
- 在 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>
推荐阅读
- dataweave - 如何在 Mule 4 中将带有逗号内引号的数据的 CSV 转换为 JSON
- php - 如何使用 cURL 从 API 获取所有内容
- java - 如何在不加载整个上下文的情况下加载单个 bean 以在 Spring Boot 中进行测试?
- logging - 启用日志记录以记录系统上打开的每个用户文件的详细信息
- c++ - LNK2019 使用特征向量时未解决的外部符号错误
- github-api - 如何在 Github 用户 API 中设置过滤器?
- javascript - 定义一个接受小写单词的 TypeScript 类型
- vba - 在表格中的光标位置添加文本框
- python - 如何使用 MatPlotLib 更改科学模型的起始值以获取第二行?
- javascript - Gatsby 的产品与开发中的 Webpack 进程/浏览器