1

Recaptcha を dJango に統合しました。 dJango スニペット - レキャプチャ

ページを表示しているビューは - 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 apirecaptcha を挿入しました。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 に答える