多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就是不同的表单,在同一个模板文件里面,动态下面有评论框,文章下面也有评论框


0
1
sofeng
谢谢,详细的回答。后面说的方法超出我能力了。如果课程是有的讲就完美了。^_^
2019-04-28
共1条回复

Jack

2019-04-28

不错,非常认真的问题。

  1. {% get_comment_form for article as form %}中的artilce来自于视图DetailArticleView返回的上下文,你要换成news那后端就要返回news的对象(通过模型类获取某一条动态)

  2. 我理解应该是继续第一个问题来的,如果使用同一个模板,要给不同的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里面

  3. 自定义样式可以参考一下官网文档,在你写到的模板里面选择需要的filed,写样式就行了

0
1
sofeng
谢谢老师的回答。 问题一;你说的我也想过,但是没有搞定,能不能给点代码? 第二个,我不是太明白,我是在改造手头的项目:有50个app,想增加能用性。form1和form2能否说的再明白点
2019-04-28
共1条回复

Django高级实战 开发企业级问答网站

融合Django高级用法/算法/设计模式/TestCase测试/云计算打造项目

908 学习 · 757 问题

查看课程