1

我已将 Recaptcha 与 dJango 集成。 dJango Snippet - Recaptcha

显示页面的视图是 - from baseapp.recaptcha import captcha

def showHome(request):    
    if(request.user.is_authenticated()):    
        tempEmail = request.session.get('id')    
        return render_to_response('logreg/login-register.html',   {'emailFromForm':tempEmail}, context_instance=RequestContext(request));    
    else:    
        request.session.set_test_cookie()    
        form = RegistrationForm()    
        loginForm = LoginForm()    
        html_captcha = captcha.displayhtml(settings.RECAPTCHA_PUB_KEY)    
        print "Captcha HTML is : %s" % html_captcha    
        return render_to_response('logreg/login-register.html', {'form': form, 'loginForm':loginForm, 'html_captcha':html_captcha})    `

这是html中的代码 -

<div id="register-dialog" title="Register yourself">    
  <p id="validateTips">All form fields are required.</p>    
  {% if error %}    
  {{ error }}    
  {% endif %}    
  <form name="registrationForm" action="registerUser/" method="post">    
      {{ form.as_p }}    
      {{ html_captcha }}    
  </form>    
</div>

它在 IE 和 Chrome 中运行良好,但 Firefox 在 recaptcha 的第 451 行向我显示了一个异常。这是该行的代码var $ST = RecaptchaState;

任何想法表示赞赏!

注意:Firefox 版本 - 3.6;IE - 8; 铬 - 4.0

4

1 回答 1

0

这是我解决它的方法。

我认为我的验证码显示在 jqueryui 对话框中,这可能是 FF 的问题。(为什么?我不知道。)因此,不要从 django 静态地把文本放在那里或写出来。我使用并在对话框上的事件中ajax api插入了recaptcha 。open

这是示例代码,以防万一有人偶然发现同样的问题。

代码几乎类似于reCaptcha api 网站上的代码

$("#register-dialog").dialog({    
    buttons:{
    },    
    open: function() {
    Recaptcha.create("41x39....",
        "recaptcha_div", {
        theme: "red",
        callback: Recaptcha.focus_response_field
        });

并将表单标签更改为 -

<form name="registrationForm" action="registerUser/" method="post">    
    {{ form.as_p }}    
    <div id="recaptcha_div"></div>    
</form>

是的,包括 ajax.js -

    <script type="text/javascript" src="http://api.recaptcha.net/js/recaptcha_ajax.js">
    </script>
于 2010-02-06T14:13:23.710 回答