多APP评论的问题:{% get_comment_form for article as form %}
来源:7-9 django-contrib-comments实现评论文章

sofeng
2019-04-28
三个问题:
1、评论时,是根据主键object_pk进行评论与文章的关联。
{% get_comment_form for article as form %} 中表示关联到article这个应用。
如果有另一个应用news,使用的同一个模板,怎么在模板中把article变成news?
2、我在试验时发现,对article应用中文章进行评论,若 news应用中有相同object_pk值的文章,会把article应用中文章的评论显示出来。这种相同object_pk值的情况怎么解决?
3、怎么自定义样式,老师可否提示一下。
2回答
-
Jack
2019-04-28
你要评论某一条动态,前端就改成
{% get_comment_form for news as form %}
前端用了news,那么后端需要返回news到上下文
class DetailArticleView(LoginRequiredMixin, DetailView):
"""文章详情"""
model = Article
template_name = 'articles/article_detail.html'
def get_context_data(self, **kwargs):
context = super(DetailArticleView, self).get_context_data()
context['news'] = News.objects.get(pk=1)50个app...牛逼的项目啊,要增加评论模块的通用性吧,那本章讲的方法不太合适,最好再写个comments应用,写表单和模型类,可以使用通用关联GenericRelation把评论模块变得通用,其它任何应用都能关联到comments模型类,相关知识在第八章讲。想用django_comments实现的话研究下Generic comment moderation,也是实现让任意app都能评论。
form1和form2就是不同的表单,在同一个模板文件里面,动态下面有评论框,文章下面也有评论框
012019-04-28 -
Jack
2019-04-28
不错,非常认真的问题。
{% get_comment_form for article as form %}中的artilce来自于视图DetailArticleView返回的上下文,你要换成news那后端就要返回news的对象(通过模型类获取某一条动态)
我理解应该是继续第一个问题来的,如果使用同一个模板,要给不同的APP评论,当主键使用ORM默认的id时,object_pk值很可能相同,都换成uuid.uuid4就不会了。不过object_pk值相同也没关系,{% get_comment_form for news as form1 %}和{% get_comment_form for article as form2 %}是针对的2个不同对象,在视图返回上下文的时候区分开,前端不要写到同一个form里面
自定义样式可以参考一下官网文档,在你写到的模板里面选择需要的filed,写样式就行了
012019-04-28
相似问题