django-simple-captcha & jquery validate

1. view.py

from django.shortcuts import render
from django.http import HttpResponseRedirect, HttpResponse
import json

from django import forms
from captcha.fields import CaptchaField


class NameForm(forms.Form):
    captcha = CaptchaField()

# Create your views here.

def get_name(request):
    form = NameForm()
    return render(request, 'polls/name.html',{'form':form})

def verifyCaptcha(request):
    result = 'true'
    _captcha_0 = request.GET.get('captcha_0') or ''
    _captcha_1 = request.GET.get('captcha_1') or ''

    form = NameForm({'captcha_0':_captcha_0,'captcha_1':_captcha_1})

    if form.is_valid():
        result = 'true'
    else:
        result = 'false'
    return HttpResponse(json.dumps([result]), content_type='application/json')

2. urls.py

from django.conf.urls import patterns, url
from polls import views

urlpatterns = patterns('',
    # url(r'^$',view.index, name='index'),
    url(r'^$', views.get_name, name='getname'),
    url(r'^verifyCaptcha/$',views.verifyCaptcha, name='verifyCaptcha'),
)


3. templates/app/name.html

<form action="." method="post" id="login-form">
    {% csrf_token %}

    {{form.captcha.errors}}
    {{form.captcha}}

    <input type="submit" value="Submit" />
</form>

<script src="{{ STATIC_URL }}js/jQuery-2.1.3.min.js"></script>
<script src="{{ STATIC_URL }}js/jquery.validate-min.js"></script>
<script type="text/javascript">
$(function(){
    // refresh
    $('img.captcha').click(function(){
            var $form = $(this).parents('form');
            var url = location.protocol + "//" + window.location.hostname + ":" + location.port + "/captcha/refresh/";
            $.getJSON(url,{},function(json){
                $form.find('input[name="captcha_0"]').val(json.key);
                $form.find('img.captcha').attr('src',json.image_url);
            });
            return false;
    });
    // check
    $("#login-form").validate({
                //onfocusout:true,
                //onsubmit:false,
                onkeyup: false,
                rules:{
                    captcha_1: {
                        // remote: '/polls/verifyCaptcha'
                        required: true,
                        remote:{
                            type:"get",
                            dataType:"json",
                            url:"/polls/verifyCaptcha/",
                            data:{
                                captcha_0:function(){return $("#id_captcha_0").val();}
                            } 
                        }
                    },
                },
                messages:{
                    captcha_1:{
                        required:"Verification code required",
                        remote:"Verification code error",
                    }
                },
                invalidHandler: function(form, validator) {
                    //location.reload();
                }
    });
});
</script>

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值