Python 在Django 1.5中,Recaptcha未显示Django注册
我正在通过整合ReCaptcha来完成Django注册。它在Django 1.4中正常工作。然而,升级到Django 1.5后,我遇到了基于类的视图的问题,我已经解决了这个问题,现在我可以在页面上呈现注册表了。最大的问题是recaptcha无法渲染 我正在粘贴我所写的代码 我的项目URL.pyPython 在Django 1.5中,Recaptcha未显示Django注册,python,django,recaptcha,django-registration,Python,Django,Recaptcha,Django Registration,我正在通过整合ReCaptcha来完成Django注册。它在Django 1.4中正常工作。然而,升级到Django 1.5后,我遇到了基于类的视图的问题,我已经解决了这个问题,现在我可以在页面上呈现注册表了。最大的问题是recaptcha无法渲染 我正在粘贴我所写的代码 我的项目URL.py from django.conf.urls import patterns, include, url from django.conf import settings from django.conf.
from django.conf.urls import patterns, include, url
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns = patterns('',
url(r'^$', 'myapp.views.index'),
(r'^accounts/', include('registration.backends.default.urls')),)
from django.conf.urls.defaults import *
from registration.views import RegistrationView
from myapp.forms import RecaptchaRegistrationForm
urlpatterns = patterns('',
url(r'^register/$', RegistrationView.register,
{'form_class': RecaptchaRegistrationForm},
name='registration.RegistrationView.register'),
(r'', include('registration.backends.default.urls')),
)
我的应用程序URL.py
from django.conf.urls import patterns, include, url
from django.conf import settings
from django.conf.urls.static import static
urlpatterns = patterns('',
) + static(settings.MEDIA_URL, document_root=settings.MEDIA_ROOT)
urlpatterns = patterns('',
url(r'^$', 'myapp.views.index'),
(r'^accounts/', include('registration.backends.default.urls')),)
from django.conf.urls.defaults import *
from registration.views import RegistrationView
from myapp.forms import RecaptchaRegistrationForm
urlpatterns = patterns('',
url(r'^register/$', RegistrationView.register,
{'form_class': RecaptchaRegistrationForm},
name='registration.RegistrationView.register'),
(r'', include('registration.backends.default.urls')),
)
我已经将发布在Marco Fucci页面中的widgets.py
和fields.py
放在myapp文件夹中,并且myapp.forms.py
如下所示
from django import forms
from myapp.fields import ReCaptchaField
from registration.forms import RegistrationForm
class RecaptchaRegistrationForm(RegistrationForm):
recaptcha = ReCaptchaField()
我已经使用manage.py
打印了注册表,它使用recaptcha打印注册表,如下所示
>>> from myapp.forms import RecaptchaRegistrationForm
>>> p = RecaptchaRegistrationForm()
>>> print p
<tr class="required"><th><label for="id_username">Username:</label></th><td><input id="id_username" maxlength="30" name="username" type="text" /></td></tr>
<tr class="required"><th><label for="id_email">E-mail:</label></th><td><input id="id_email" name="email" type="text" /></td></tr>
<tr class="required"><th><label for="id_password1">Password:</label></th><td><input id="id_password1" name="password1" type="password" /></td></tr>
<tr class="required"><th><label for="id_password2">Password (again):</label></th><td><input id="id_passwo" name="password2" type="password" /></td></tr>
<tr class="required"><th><label for="id_recaptcha">Recaptcha:</label></th><td> <script type="text/javascript" src="http://www.google.com/recaptcha/api/challenge?k=6LcPF-KEY"></script>
>>从myapp.forms导入重述CharRegistrationForm
>>>p=RecaptCharRegistrationForm()
>>>打印p
用户名:
电邮:
密码:
密码(再次):
综述:
但是当我打电话给http://localhost:8000/accounts/register/
浏览器中的recaptcha未呈现。注册表未继承Recaptcha。可能是我在做傻事。有人能给我指点一下吗。在url模式中使用a时,请将url模式指向as\u view()
方法。不能只包含RegistrationView.register
方法
要自定义RegistrationView
的行为,请对其进行子类化,并设置form_class
属性
class RecaptchaRegistrationView(RegistrationView):
"""
Subclass of RegistrationView that uses RecaptchaRegistrationForm
"""
form_class = RecaptchaRegistrationForm
urlpatterns = patterns('',
url(r'^register/$', RecaptchaRegistrationView.as_view(), name='registration_register'),
当您调用register视图时,是否可以(通过调试)确保您的RecaptCharRegistrationForm被拾取
而且,
呈现的html中的公钥似乎是错误的。
6LcPF键您认为模板有什么问题吗?打印ReCaptcha正在呈现,如我的问题所示。我刚刚截断了公钥。好的,那么视图呈现的最终html中有ReCaptcha脚本吗?是的。我正在尝试下面的解决方案,如果最后一个网页中出现了ReCaptcha脚本,这意味着python代码中没有任何错误。请检查是否存在任何javascript错误。我呈现了您发布的html输出,它对我有效。我在
registration.views
中添加了注册RecaptchaRegistrationView
,并更改了URL模式。但它仍然没有渲染,可能是我做错了什么。我将重新信仰。但是,我可以正确调用其余类,即,登录
,重置
,忘记