乍一看,编写分层评论应用程序似乎太容易了,但相信我并不是那么简单。有太多的边缘情况和安全问题。因此,如果这是一个真正的项目,我建议您使用disqus、任何其他托管解决方案或(现已弃用)评论框架。
另一方面,如果您只是想了解事情是如何完成或玩耍的,那么到目前为止,您的代码似乎足够公平。但是您应该考虑Django 的内置内容类型框架,而不是直接的外键关系。这样您就可以将评论对象与任何其他对象相关联。(博客文章或其他评论)。看看评论框架models.py,你会看到它。
class BaseCommentAbstractModel(models.Model):
"""
An abstract base class that any custom comment models probably should
subclass.
"""
# Content-object field
content_type = models.ForeignKey(ContentType,
verbose_name=_('content type'),
related_name="content_type_set_for_%(class)s")
object_pk = models.TextField(_('object ID'))
content_object = generic.GenericForeignKey(ct_field="content_type", fk_field="object_pk")
也看看RenderCommentListNode
在评论框架模板标签。您应该编写一个递归函数来获取和显示分层注释。
您必须考虑以下情况:
- 如果用户删除评论会发生什么?
- 我们应该如何删除评论?我们应该真正从数据库中删除它还是应该设置一个属性
deleted
- 我们应该如何处理权限和用户访问级别?
- 如果我们让匿名用户发表评论,我们需要他们提供什么信息。
- 如何检查人工验证?验证码够吗?
快乐的黑客。