首先通过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})
此时前端就可以点击验证码刷新