我想在Django中使用captcha实现用户注册。 django-registration app的工作流程很棒,但它没有验证码。
您建议使用哪种验证码? 是否有其他一些注册+验证码变体或有关该主题的有用链接?
这应该适用于Django-1.1并且安装起来不会太难。
答案 0 :(得分:21)
django-registration非常容易扩展。扩展它的一种方法是提供自定义注册表单。我建议使用reCaptcha,例如使用here(archived)中的小部件和表单字段。然后就像编写自定义表单类和注册后端一样简单(比声音更简单):
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-registration使用你的后端。该步骤在docs中进行了描述(我找不到HTML版本的文档,抱歉)
答案 1 :(得分:18)
我刚遇到这个问题,但解决方案很简单。
我正在使用django-registration,我想要一个用于用户注册的reCAPTCHA字段。只需1分钟:
下载django-recaptcha(pip install django-recaptcha
)
在您的项目上安装它。也就是说,将“captcha”文件夹复制到项目中,将“captcha”添加到INSTALLED_APPS
并将RECAPTCHA_PUBLIC_KEY
和RECAPTCHA_PRIVATE_KEY
键添加到settings.py中(如安装说明中所述) )
打开registration/forms.py
并在class RegistrationForm(forms.Form):
captcha = ReCaptchaField()
您还必须导入:
from captcha.fields import ReCaptchaField
就是这样。不到一分钟。
答案 2 :(得分:16)
对于像我这样迟到线程的人来说,现在有很多解决方案,这些解决方案很容易安装:
我已经成功设置了Django Mollom和Django Simple Captcha,最难的部分是在我的Mac上安装PIL时牦牛剃须。实现代码与每个人建议的文档一样简单。