我已将Recaptcha与dJango整合在一起。 dJango Snippet - Recaptcha
显示该页面的视图是 - 来自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&amp; Chrome,但firefox在recaptcha第451行显示异常。
以下是该行var $ST = RecaptchaState;
任何想法都表示赞赏!
注意:Firefox版本 - 3.6; IE - 8; Chrome - 4.0
答案 0 :(得分:0)
以下是我如何解决它。
我认为我的验证码是在jqueryui对话框中显示的,也许这就是FF的问题。 (为什么?我不知道。)
因此,而不是静态地将文本放在django或写出来。
我使用ajax api
并在对话框的open
事件中插入了recaptcha。
以下是示例代码,以防有人遇到同样的问题。
上的代码几乎相似$("#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>