1

我试图了解如何将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 中是否有我可以覆盖的方法?

4

2 回答 2

2

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

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

COMMENTS_APP = 'protected_comments'

现在,当您呈现您的评论表单时,它会放置一个默认 URL,告诉表单它将发布到哪里。您可以在此处contrib.comments查看默认的 URLconf 。

用于处理已发布评论的默认视图已经通过您的字段,无论是否自定义,并确保它们有效。您只需添加:

if form.is_valid():
    human = True

如果这是您要添加验证码的自定义应用程序,那么它还没有为您编写的视图功能contrib.comments

所以你很好,验证码会用你已经写的内容来验证自己。我刚刚在一个演示项目上对其进行了测试以确认。

于 2010-10-05T17:07:42.433 回答
-1

如果您只是为了好玩而尝试实现它。那么抱歉,我没有解决您的问题的方法,无需进一步阅读。

否则我会建议使用 Disqus。这将为您节省大量时间以及以后的维护麻烦。试试Django-Disqus

还有一篇来自Daniel Roseman的博客文章,讲述了他为什么转向 Disqus

于 2010-10-05T16:08:11.997 回答