django-simple-captcha 验证码的刷新与动态验证

1、views.py

from django.http import JsonResponse
from captcha.models import CaptchaStore

def ajax_val(request):
     if  request.is_ajax():
         cs = CaptchaStore.objects.filter(response=request.GET['response'], hashkey=request.GET['hashkey'])
         if cs:
             json_data = {'status':1}
         else:
             json_data = {"status":0}
         return JsonResponse(json_data)
     else:
         json_data = {"status":0}
         return JsonResponse(json_data) 

 

2、urls.py

from users.views import ajax_val     #引入刚才添加在views.py中的代码


urlpatterns = [
    url(r'^ajax_val/', ajax_val, name='ajax_val'),      #添加这一行
]

 

3、 

html文件中

<script>
    $(function(){

        $('.captcha').click(function(){
        console.log('click');
         $.getJSON("/captcha/refresh/",
                  function(result){
             $('.captcha').attr('src', result['image_url']);
             $('#id_captcha_0').val(result['key'])
          });});

    $('#id_captcha_1').blur(function(){
  // #id_captcha_1为输入框的id,当该输入框失去焦点是触发函数
        json_data={
            'response':$('#id_captcha_1').val(), // 获取输入框和隐藏字段id_captcha_0的数值
            'hashkey':$('#id_captcha_0').val()
        }
        $.getJSON('/ajax_val', json_data, function(data){
 //ajax发送
            $('#captcha_status').remove()
            if(data['status']){ //status返回1为验证码正确, status返回0为验证码错误, 在输入框的后面写入提示信息
                $('#id_captcha_1').after('<span id="captcha_status" >*验证码正确</span>')
            }else{
                 $('#id_captcha_1').after('<span id="captcha_status" >*验证码错误</span>')
            }
        });
    });
    })
    </script>

  

 

posted on 2018-03-22 17:25  Alex-zs  阅读(456)  评论(0编辑  收藏  举报

导航