Django的注册自定义登记表(验证码字段)

Django的注册自定义登记表(验证码字段)

问题描述:

我尝试将验证码字段添加到我的登记表,随后马科斯指南:Django的注册自定义登记表(验证码字段)

http://www.marcofucci.com/tumblelog/26/jul/2009/integrating-recaptcha-with-django/

在我的注册应用程序,我有一个文件“的形式。 PY”它看起来像这样:

from recaptcha import fields as captcha_field 
from registration.forms import RegistrationFormUniqueEmail 

class RecaptchaRegistrationForm(RegistrationFormUniqueEmail): 
    recaptcha = captcha_field.ReCaptchaField() 

并得到由我的解决方案广泛urls.py下/账户包括一个urls.py:

from django.conf.urls.defaults import * 
from registration.views import register 
from forms import RecaptchaRegistrationForm 
urlpatterns = patterns('users.views', 
         (r'^$', 'profile'), 
         url(r'^register/$', register, {'form_class': RecaptchaRegistrationForm}, name='registration_register'), 
        ) 

现在,当我去/帐号/注册/我收到此错误信息:

Exception Value: register() takes at least 2 non-keyword arguments (1 given)

我不知道为什么。

+0

你可以显示'register'视图的代码吗? – 2009-12-14 10:44:22

+1

django注册视图的代码在这里:http://bitbucket.org/ubernostrum/django-registration/src/tip/registration/views.py – Kai 2009-12-14 11:23:19

“backend”不是可选参数。 你能否附上你异常的堆栈跟踪? 它似乎试图使用DefaultBackend作为一个字符串。

+0

回溯: 文件“/usr/lib/pymodules/python2.6/django/core/handlers/base.py”在get_response 92.响应=回调(请求,* callback_args,** callback_kwargs) 文件“/usr/local/lib/python2.6/dist-packages/registration/views.py”在寄存器 178中。backend = get_backend(后端) 文件“/ usr /local/lib/python2.6/dist-packages/registration/backends/__init__.py“in get_backend 22. i = path.rfind('。') 异常类型:AttributeError at/accounts/register/ 异常值:type object'DefaultBackend'没有属性'rfind' – Kai 2009-12-14 13:29:40

+0

嗯,我试过了:'backend':'registration.backends.default.DefaultBackend'是没有错误信息了,但同时,我也没有得到任何recaptcha领域。 – Kai 2009-12-14 14:03:31

+0

3种可能性: 1 - 您尚未指定'form_class'参数(如果未提供,将从注册后端检索) 2 - 您没有使用{{form}}显示您的表单或{{form_as_p}}) 3 - 您的recaptcha配置存在一些问题。在这种情况下,请尝试使用python shell创建表单并打印它。如果没有正确配置,您应该会看到一个错误。 – 2009-12-14 15:14:47

它要求的第一个非关键字参数是request,它是自动获取的。

第二个非关键字参数,它没有得到,是authentication backend

要快速行动,您可以使用django注册附带的default backend。我不能轻易这个测试自己,但是这应该这样做:

from django.conf.urls.defaults import * 
from registration.views import register 
from forms import RecaptchaRegistrationForm 
from registration.backends.default import DefaultBackend 
urlpatterns = patterns('trackerbase.users.views', 
         (r'^$', 'profile'), 
         url(r'^register/$', register, { 
         'backend': DefaultBackend, 
         'form_class': RecaptchaRegistrationForm, 
         }, name='registration_register'), 
         ) 

看看您链接到starting at line 95文件。阅读后应该告诉你所有你需要知道的。

+0

我以前试过,它不工作。我得到这个错误: >异常值:类型对象'DefaultBackend'没有属性'rfind' 因为它,并且因为它说后端是一个可选参数,我认为这只是错误的方式得到它工作,并没有在我的问题中提到它。 – Kai 2009-12-14 12:37:50

+0

尝试'后端':'registration.backends.default.DefaultBackend'。 – luc 2010-07-16 07:09:39

+0

当我尝试从registration.forms导入RegistrationForm以及视图时,从相同的marcofucci博客实现验证码时,我总是在此行上发生错误。我去了蟒蛇外壳和我没有得到这样的警告,请帮助我 – vkrams 2012-09-17 11:17:31

您可以使用recaptcha-client,对于一步一步的程序,你可以按照k0001's 博客它开箱即用。