我想了解如何将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中的方法吗?
答案 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