无法显示帖子的评论列表

时间:2018-06-15 13:45:58

标签: django-templates

我试图在我的django post_detail模板中添加和显示评论列表,但它没有显示...

这是我的评论模型......

class Comment(models.Model):
    author = models.ForeignKey(settings.AUTH_USER_MODEL, default=1, on_delete=models.CASCADE)
    content = models.TextField()
    active = models.BooleanField(default=True)
    created = models.DateTimeField(blank=True, auto_now=False, auto_now_add=True)

    class Meta:
        ordering = ['created']

    def __str__(self):
        return "Comment by {} on {}".format(self.author, self.content)

然后我将评论模型添加到我的帖子模块中,如下所示......

from comments.models import Comment

class Post(models.Model):
     comment = models.ForeignKey(Comment, blank=True, null=True)

这是我发布的views.py

def post_detail(request, slug):
    post = get_object_or_404(Post, slug=slug)

    return render(request, "blog/post_detail.html", {
        'post':post,
    })

    comments = post.comment.filter(active=True)
    if request.method == 'POST':

        #A comment was posted
        comment_form = CommentForm(request.POST or None)

        if comment_form.is_valid() and user.is_authenticated():

            #Create new comment but dont save to DataBase first
            new_comment = comment_form.save(commit = False)

            #Assigns the current instance to the comment
            new_comment.post = post

            #Saves the comment to DataBase
            new_comment.save()
    else:
        comment_form = CommentForm()
    return render(request, "blog/post_detail.html", {
        'post':post,
        'comments': comments,
        'comment_form': comment_form
    })

最后我试图将这些显示在我的模板中,但我无法获得每个帖子的评论列表

<!-- displays available comments for this post -->
                              {% for comment in comments %}
                              <div class="media d-block d-md-flex">
                                  <img class="d-flex rounded-circle avatar z-depth-1-half mb-3 mx-auto" src="https://mdbootstrap.com/img/Others/documentation/img (2)-mini.jpg" alt="Avatar">
                                  <div class="media-body text-center text-md-left ml-md-3 ml-0">
                                      <h5 class="mt-0 font-weight-bold blue-text">comment {{ forloop.counter }} by {{ comment.author }} {{ comment.created }}</h5>
                                      {{ comment.content|linebreaks }}
                                  </div>
                              </div>
                              {% endfor %}

                              </div>
                            </div>
                            <!--/.Comments-->

                          {% endif %}

                          <!-- Displays comment form for registered users else link visitors to registeration page -->

                          {% if user.is_authenticated %}

                              {% if new_comment %}
                                  <h4><span class="badge badge-pill green">your comment has been added<i class="fa fa-check" aria-hidden="true"></i></span></h4>
                              {% else %}
                                  <form method="POST">
                                    {% csrf_token %}
                                    <div class="form-group shadow-textarea">
                                        <label for="exampleFormControlTextarea6">Add a comment</label>
                                        <textarea class="form-control z-depth-1" id="exampleFormControlTextarea6" rows="3" placeholder="Write something here...">
                                          {{ comment_form.as_p }}
                                        </textarea>
                                    </div>
                                      <div class="text-center mt-4">
                                          <button class="btn btn-info btn-md" type="submit" value="add comment">submit</button>
                                      </div>
                                  </form>
                              {% endif %}

                          {% else %}
                              <h4>You have to register in order to comment this post </h4>
                          {% endif %}

我需要帮助才能显示它 它已经吃完了我的一天。

1 个答案:

答案 0 :(得分:0)

我终于找到了错误... 我在post_detail之前绘制了comment_form模板

这是我的最终代码

def post_detail(request, slug):
    post = get_object_or_404(Post, slug=slug)

    comments = Comment.object.filter(active=True)
    if request.method == 'POST':

        #A comment was posted
        comment_form = CommentForm(request.POST or None)

        if comment_form.is_valid() and user.is_authenticated():

            #Create new comment but dont save to DataBase first
            new_comment = comment_form.save(commit = False)

            #Assigns the current instance to the comment
            new_comment.post = post

            #Saves the comment to DataBase
            new_comment.save()
    else:
        comment_form = CommentForm()
    return render(request, "blog/post_detail.html", {
        'post':post,
        'comments': comments,
        'comment_form': comment_form
    })