Facile à utiliser django captcha ou application d'enregistrement avec captcha?

Je veux implémenter l'enregistrement des utilisateurs en utilisant captcha dans Django. Le flux de travail de l'application django-registration est génial, mais il n'a pas de captcha.

Quel captcha recommanderiez-vous d'utiliser avec? D'autres variantes de l'enregistrement+captcha ou des liens utiles sur le sujet?

Cela devrait fonctionner avec Django-1.1 et ne pas être trop difficile à installer.

28
demandé sur TechZen 2010-02-16 22:46:44

3 réponses

Django-l'enregistrement est assez extensible. Une façon de l'étendre est de fournir un formulaire d'inscription personnalisé. Je recommande d'utiliser reCaptcha , par exemple avec le widget et le champ de formulaire de ici (archivée ). Ensuite, il est aussi simple que d'écrire une classe de formulaire personnalisée et un backend d'enregistrement (ce qui est plus simple qu'il n'y paraît):

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

La dernière étape consiste à dire à django-registration d'utiliser votre backend. Cette étape est décrite dans les documents (Je n'ai pas trouvé de code HTML version des documents, désolé)

21
répondu Benjamin Wohlwend 2011-07-30 18:29:39

Je viens d'avoir ce problème, mais la solution est simple.

J'utilise django-registration , et je veux un champ reCAPTCHA pour l'enregistrement de l'utilisateur. En seulement 1 minute:

  1. Télécharger django-recaptcha (pip install django-recaptcha)

  2. Installez-le sur votre projet. C'est-à-dire, Copiez le dossier" captcha "dans votre projet, ajoutez "captcha" à INSTALLED_APPS et ajoutez vos clés RECAPTCHA_PUBLIC_KEY et RECAPTCHA_PRIVATE_KEY à settings.py aussi (comme décrit dans l'installation les instructions)

  3. Ouvrir registration/forms.py et ajouter ce champ à l'intérieur de class RegistrationForm(forms.Form):

    captcha = ReCaptchaField()

    Vous devrez également importer:

    from captcha.fields import ReCaptchaField

Et c'est tout. Moins d'une minute.

17
répondu Salvatorelab 2017-01-06 11:05:56

Pour ceux comme moi qui arrivent en retard sur le fil, il existe maintenant un tas de solutions, qui sont assez faciles à installer:

J'ai réussi à configurer Django Mollom et Django Simple Captcha, et le plus dur était de raser yak autour de l'installation de PIL sur mon Mac. La mise en œuvre du code était aussi simple que les documents de chacun le suggéraient.

16
répondu sillygwailo 2011-01-07 00:20:32