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>