django:为django评论添加简单的验证码

时间:2010-10-05 14:53:02

标签: django django-comments

我想了解如何将http://code.google.com/p/django-simple-captcha/用于django评论。我完成了这里所描述的一切: http://docs.djangoproject.com/en/dev/ref/contrib/comments/custom/

所以自定义评论应用中的表单如下所示:

from django import forms
from django.contrib.comments.forms import CommentForm
from captcha.fields import CaptchaField


class CommentFormWithCaptcha(CommentForm):
    captcha = CaptchaField()

    def get_comment_model(self):
        # Use our custom comment model instead of the built-in one.
        return Comment

我的__init__.py文件:

from protected_comments.forms import CommentFormWithCaptcha

def get_form():
    return  CommentFormWithCaptcha

渲染验证码字段,但我不明白如何检查输入是否有效。例如。 simple-captcha docs说下面的

if form.is_valid():
            human = True

但我真的不明白我可以在哪里添加它。我可以覆盖forms.py中的方法吗?

2 个答案:

答案 0 :(得分:2)

我将假设您已按照文档中的说明正确将protected_comments应用添加到settings.py文件中:

INSTALLED_APPS = [
    ...
    'protected_comments',
    ...
]

COMMENTS_APP = 'protected_comments'

现在,当您呈现评论表单时,它将放置一个默认URL,告诉表单将​​要发送到哪个表单。您可以看到contrib.comments默认网址here

处理发布的评论的默认视图已经通过您的字段,自定义或非自定义,并确保它们有效。你只需要添加:

if form.is_valid():
    human = True

如果这是您要添加验证码的自定义应用,那就没有像contrib.comments那样为您编写的查看函数。

所以你很好,验证码将验证你已经写过的东西。我刚刚在一个演示项目中进行了测试以确认。

答案 1 :(得分:-1)

如果你想要实现这个目的只是为了好玩。对不起,我没有解决你的问题&无需进一步阅读。

否则我会建议使用Disqus。这样可以节省大量时间和以后的维护麻烦。试试 Django-Disqus

还有来自blog post Daniel Roseman 关于他为什么转移到Disqus