Django auth通过simple-captcha实现验证码,并利用ajax实现验证码刷新

首先通过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})

 此时前端就可以点击验证码刷新

 

转载于:https://www.cnblogs.com/abczqy/p/10779647.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值