编程语言
首页 > 编程语言> > python-设置Django博客评论

python-设置Django博客评论

作者:互联网

如果我想在Django中为博客设置评论,并且希望人们能够回复评论(例如普通博客),这意味着每个评论都必须知道它是否是对另一个评论的评论,我是否应该设置像这样的模型领域?

from django.db import models
from django.contrib.auth.models import User

class Comment(models.Model):
    post = models.ForeignKey(Post)
    user = models.ForeignKey(User)
    text = models.TextField()
    date = models.DateTimeField()
    reply_to = models.ForeignKey(Comment, blank=True, null=True)

那是对的吗?以及如何在模板中显示它们?

解决方法:

乍看之下,编写分层注释应用程序似乎太容易了,但是请相信我,并不是那么简单.边缘情况和安全性问题过多.因此,如果这是一个真实的项目,我建议您使用disqus,任何其他托管解决方案或(现在不建议使用)comments framework.

另一方面,如果您只是想学习事情的进展或玩法,那么到目前为止,您的代码似乎足够公平.但是您应该考虑使用Django’s built-in content types framework而不是直接的外键关系.这样,您可以将注释对象与任何其他对象相关联. (博客文章或其他评论).看一下注释框架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")

还可以看一下comment framework template tags中的RenderCommentListNodeNode.您应该编写一个递归函数才能获取和显示层次结构注释.

您必须考虑以下情况:

>如果用户删除评论会怎样?
>我们应该如何删除评论?我们到底应该从数据库中删除它还是应该设置一个属性如Deleted
>我们应该如何处理权限和用户访问级别?
>如果我们让匿名用户发表评论,那么我们需要他们提供哪些信息.
>如何检查人工验证?验证码够吗?

骇客入侵.

标签:django-templates,python,django,django-models
来源: https://codeday.me/bug/20191122/2060428.html