階層的なコメント アプリケーションを作成することは、一見すると簡単すぎるように思えますが、それほど単純ではないと私は信じています。エッジケースとセキュリティの問題が多すぎます。したがって、これが実際のプロジェクトである場合は、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
- アクセス許可とユーザー アクセスのレベルをどのように処理する必要がありますか?
- 匿名ユーザーにコメントを許可する場合、彼らからどのような情報が必要になりますか?
- 人間の検証を確認する方法は? キャプチャで十分ですか?
ハッピーハッキング。