很多场景需要验证码功能,比如登录。我们可以直接使用django的第三方库 django-simple-captcha 模块来实现验证码功能,但是如果需要刷新验证码,还需要做一些操作才行。我们还是可以使用django的第三方库 django-simple-captcha 模块来实现验证码刷新功能。
pip install django-simple-captcha
captcha模块结合form表单使用方法如下:
forms.py文件:
#forms.py
from django import forms
from captcha.fields import CaptchaField
class UserForm(forms.Form):
username = forms.CharField(label="用户名", max_length=128, widget=forms.TextInput(
attrs={'class': 'form-control', 'placeholder': "Username", 'autofocus': ''}))
password = forms.CharField(label="密码", max_length=256,
widget=forms.PasswordInput(attrs={'class': 'form-control', 'placeholder': "Password"}))
captcha = CaptchaField(label='验证码') #这个是验证码标签
urls.py文件:
#urls.py
from django.urls import include
from captcha.views import captcha_refresh # 验证码刷新功能,captcha_refresh为captcha.views内置方法,不需要我们单独写
urlpatterns = [
path('admin/', admin.site.urls),
path('login/', views.login),
path('captcha/', include('captcha.urls')), # 生成验证码
path('refresh/', captcha_refresh), # 点击可以刷新验证码
]
captcha.views 内置就有刷新验证码的方法,因此我们不必再自己去写了,非常方便。
模版文件(login.html):
<!-- login.html -->
{#刷新验证码的脚本,放到body部分的最后面即可#}
<script>
$('.captcha').click(function () {
$.getJSON('/captcha/refresh/',function (result) {
$('.captcha').attr('src',result['image_url']);
$('#id_captcha_0').val(result['key']);
});
});
</script>
只需要修改上述几个文件的代码,其它地方均不需要改动,验证码即可点击进行刷新。