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.
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é)
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:
Télécharger django-recaptcha (
pip install django-recaptcha
)Installez-le sur votre projet. C'est-à-dire, Copiez le dossier" captcha "dans votre projet, ajoutez "captcha" à
INSTALLED_APPS
et ajoutez vos clésRECAPTCHA_PUBLIC_KEY
etRECAPTCHA_PRIVATE_KEY
à settings.py aussi (comme décrit dans l'installation les instructions)-
Ouvrir
registration/forms.py
et ajouter ce champ à l'intérieur declass RegistrationForm(forms.Form):
captcha = ReCaptchaField()
Vous devrez également importer:
from captcha.fields import ReCaptchaField
Et c'est tout. Moins d'une minute.
Pour ceux comme moi qui arrivent en retard sur le fil, il existe maintenant un tas de solutions, qui sont assez faciles à installer:
- http://code.google.com/p/django-simple-captcha/
- http://code.google.com/p/django-captcha/
- https://github.com/inueni/django-captcha-field
- https://github.com/justquick/django-math-captcha
- https://github.com/marconi/django-mollom, qui utilise le tiers Service Mollom (qui fournit des services de captcha et de filtrage de spam).
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.