首先通过pip安装simple-captcha
pip install django-simple-captcha
将captcha添加到settings.py的INSTALLED_APPS
在路径urls.py中配置路径
将验证码数据迁移到数据库,这是数据库会多一个captcha_captchastore存储验证码信息的表
python manage.py migrate
添加验证码到我们的注册表单,记得导入from captcha.fields import CaptchaField
修改相应label和error_message定义自己的需求
此时进入网站注册页面已经可以看到验证码,但是点击无法刷新,在此我们利用ajax实现刷新
在前端添加jQuery
$(function() {
$(".captcha").click(function () {
$.getJSON("{% url 'movie:signup' %}",function(result){
$('.captcha').attr('src', result.image_url);
$('#id_captcha_0').val(result.key);
});
});
});
请求url的view中,比如我的是signup中,记得导入from captcha.models import CaptchaStore 和 from captcha.helpers import captcha_image_url
def signup(request):
if request.is_ajax(): #请求ajax则返回新的image_url和key
result = dict()
result['key'] = CaptchaStore.generate_key()
result['image_url'] = captcha_image_url(result['key'])
return JsonResponse(result)
if request.method == 'POST':
form = RegisterForm(request.POST)
if form.is_valid():
form.save()
user = authenticate(username=form.cleaned_data['username'],
password=form.cleaned_data['password1'])
login(request, user) #注册成功后自动登录
return redirect(reverse('movie:index'))
else:
form = RegisterForm()
return render(request, 'registration/signup.html', context={'form': form})
此时前端就可以点击验证码刷新