2010-02-16 12 views

Respuesta

21

django-registration es bastante ampliable. Una forma de extenderlo es proporcionar un formulario de registro personalizado. Yo recomendaría usar reCaptcha, p. con el widget y el campo de formulario de here (archived). Entonces es tan simple como escribir una clase de formulario personalizado y registro backend (que es más sencillo de lo que parece):

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 

El último paso es decirle a Django-registro para utilizar su servidor. Ese paso se describe en el docs (no pude encontrar una versión HTML de los documentos, lo siento)

+0

gracias! eso fue útil! –

+0

el enlace al widget y al campo de formulario da un 502 – sacabuche

+0

Afortunadamente, archive.org tiene una copia: http://web.archive.org/web/20090606022756/http://lobstertech.com/2008/aug/27/ integrating_django_recaptcha/ –

16

Para aquellos que llegan tarde al hilo, hay un montón de soluciones disponibles, que son bastante fáciles instalar:

He configurado con éxito Django Mollom y Django Simple Captcha, y la parte más difícil ha sido afeitarme al instalar PIL en mi Mac. Implementar el código fue tan sencillo como lo sugieren los documentos para cada uno.

17

Acabo de tener este problema, pero la solución es muy simple.

Estoy usando django-registration, y quiero un campo reCAPTCHA para el registro del usuario. En tan sólo 1 minuto:

  1. descarga django-recaptcha (pip install django-recaptcha)

  2. instalarlo en su proyecto. Es decir, copie la carpeta "captcha" a su proyecto, agregue "captcha" al INSTALLED_APPS y agregue sus claves RECAPTCHA_PUBLIC_KEY y RECAPTCHA_PRIVATE_KEY a la configuración.py también (como se describe en las instrucciones de instalación)

  3. abierta registration/forms.py y añade este campo dentro class RegistrationForm(forms.Form):

    captcha = ReCaptchaField()

    también tendrá que importar:

    from captcha.fields import ReCaptchaField

Y eso es todo. Menos de un minuto.

+3

No es broma, siguió sus instrucciones y tardó menos de un minuto .. ¡Gracias! – PhilBot

+1

Pero, ¿qué sucede si el paquete de registro no se copia en su proyecto y, en su lugar, se instala a través de la instalación de pip ...? – Timbadu