【问题标题】:How to load a comment form in DetailView?如何在 DetailView 中加载评论表单?
【发布时间】:2019-11-01 03:57:12
【问题描述】:

我能够加载通过管理页面添加的 cmets,但我无法在 DetailView 本身中创建表单

我已尝试在详细视图模板中添加表单,但在站点中仍然看不到该表单

#views.py
class MessageDetailView(DetailView):
    model = Message
    template_name = "messaging/detail.html"
    #queryset = Message.objects.all()

    def get_context_data(self, **kwargs):
        context = super().get_context_data(**kwargs)
        context['comments'] = Comment.objects.filter(message=self.object)
        return context
#detail.html
<form method="POST">
                {% csrf_token %}
                <h3>Write a New Comment</h3>
                <div class="messagebox">
                        {{ form|crispy }}
                        <button class="btn" type="submit">
                            Post Comment
                        </button>
                </div>
            </form>
#forms.py
class CommentForm(forms.ModelForm):
    class Meta:
        model = Comment
        fields = ("comment")
#models.py
class Comment(models.Model):
    message = models.ForeignKey(Message,on_delete=models.CASCADE)
    comment = models.TextField(max_length=50)
    date_posted = models.DateTimeField(default=timezone.now)

    def __str__(self):
        return "Comment on {}".format(str(self.date_posted))

站点加载了cmets,但是表单没有加载,有什么办法解决这个问题吗?请在答案中提供一些代码,而不仅仅是将我链接到纪录片。

【问题讨论】:

    标签: python django python-3.x mixins django-class-based-views


    【解决方案1】:

    您没有将表单传递给您的模板:

    def get_context_data(self, **kwargs):
            context = super().get_context_data(**kwargs)
            context['comments'] = Comment.objects.filter(message=self.object)
            context['form'] = CommentForm()
            return context
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-07-06
      • 2020-01-10
      • 2019-02-08
      • 1970-01-01
      • 1970-01-01
      • 2019-09-21
      相关资源
      最近更新 更多