2010-02-16 27 views

回答

21

Django注册是相当可扩展的。一种扩展它的方法是提供一个自定义注册表单。我建议使用reCaptcha,例如与小部件和表单字段从herearchived)。然后,它是写一个自定义窗体类和注册后端(这是简单的比它听起来)一样简单:

from registration.backends.default import DefaultBackend 
from registration.forms import RegistrationForm 

class RecaptchaRegistrationForm(RegistrationForm) 
    recaptcha = ReCaptchaField(label="I'm a human") 

class RecaptchaRegistrationBackend(DefaultBackend): 
    def get_form_class(self, request): 
     return RecaptchaRegistrationForm 

的最后一步是告诉Django注册使用你的后端。 docs(我找不到文档的HTML版本,对不起)

+0

谢谢!这很有用! –

+0

指向窗口小部件和表单域的链接提供502 – sacabuche

+0

幸运的是,archive.org有一个副本:http://web.archive.org/web/20090606022756/http://lobstertech.com/2008/aug/27/ integrate_django_recaptcha/ –

16

对于像我这样迟到线程的人,现在有一堆解决方案,这些解决方案非常简单安装:

我已经成功地安装的Django Mollom和Django的简单验证码,而最难的部分是牦牛剃须围绕在我的Mac上安装PIL。代码的实现与每个文档的建议一样直截了当。

17

我刚刚遇到了这个问题,但解决方案很简单。

我正在使用django-registration,我想要reCAPTCHA字段进行用户注册。在仅仅1分钟:

  1. 下载django-recaptchapip install django-recaptcha

  2. 您的项目安装。也就是说,将“captcha”文件夹复制到您的项目中,将“captcha”添加到INSTALLED_APPS并将您的RECAPTCHA_PUBLIC_KEYRECAPTCHA_PRIVATE_KEY键添加到设置。PY太(如安装说明)

  3. 开放registration/forms.py,往其中加class RegistrationForm(forms.Form):

    captcha = ReCaptchaField()

    这个领域,你也必须导入:

    from captcha.fields import ReCaptchaField

就是这样。不到一分钟。

+3

没有开玩笑 - 按照你的指示,它花了不到一分钟..谢谢! – PhilBot

+1

但是如果注册软件包没有被复制到您的项目中,而是通过pip install来安装...? – Timbadu