如何在注释视图中更正逻辑?

时间:2017-10-14 15:58:52

标签: python django django-templates

我为帖子构建了功能评论但有bug。当有人发表评论时,其他用户会看到正确的评论正文,但图片不正确

def p(request, pk):
    user = request.user
    #user_that_text_comment = User.objects.filter(pk=pk)
    topic = get_object_or_404(Topic, pk=pk)
    post = get_object_or_404(Post, pk=pk)
    comment = Comments.objects.filter(pk=pk)
    if request.method == 'POST':
        form = CustomCommentForm(request.POST)
        if form.is_valid():
            comment = form.save(commit=False)
            comment.post = post
            comment.creator = user
            comment.save()
            comment = Comments.objects.create(
                body=form.cleaned_data.get('body'),
                creator=user,

            )
            return render(request, 'post.html', {'post': post, 'topic': topic, 'comment': comment, 'form': form})
    else:
        form = CustomCommentForm()
    return render(request, 'post.html', {'post': post, 'topic': topic, 'comment': comment, 'form': form})

我为帖子建立了评论功能,但它有bug。当有人发表评论时,其他用户会看到正确的评论正文,但图片和名称不正确。 我知道为什么我有这个问题(我想),它发生了因为我使用user=request.user。关于我在3行评论的字符串的注意事项。我认为这会对我有所帮助,但事实并非如此。我在我的网址中使用主键。 url(r'^boards/(?P<pk>\d+)/$', views.board_topics, name='board_topics'),当我在filter中使用主键时,它会返回给我与post pk具有相同pk的用户。我需要它返回给我创建此评论的用户名和用户图片。

Html模板:

<div class="detailBox">
    <div class="titleBox">
      <label>{{topic.subject}}</label>
        <!--<button type="button" class="close" aria-hidden="true">&times;</button>-->
    </div>
    <div class="commentBox">
        <img src="{{ MEDIA_URL }}{{ topic.image.url }}" alt="">
        <p class="taskDescription">{{ post.message|safe|linebreaks}}</p>
    </div>
    <div class="actionBox">

        <ul class="commentList">
            {% for comment in post.comment.all %}
            <li>

                <div class="commenterImage">
                  {% if user.profile.profile_img %}
                    <img src="{{ MEDIA_URL }}{{ user.profile.profile_img.url }}" >
                    {{ user.username }}
                    {% else  %}
                    <img src="https://image.freepik.com/free-vector/no-translate-detected_1053-593.jpg">
                    {{ user.username }}
                    {% endif %}
                </div>
                <div class="commentText">

                    <p class="">{{ comment.body }}</p> <span class="date sub-text">{{comment.created_at}}</span>
                </div>
            </li>
            {% endfor %}

        </ul>
        <form class="form-inline" role="form" method="post">
            {% csrf_token%}
            {{form}}

                <button type="submit" class="btn btn-default">Add</button>

        </form>
    </div>
</div>{% endblock %}

1 个答案:

答案 0 :(得分:1)

您应该添加comment前缀,并将creator与评论中的变量相关联

    <li>

        <div class="commenterImage">
          {% if comment.creator.profile.profile_img %}
           <!-- ^^^^^   -->
            <img src="{{ MEDIA_URL }}{{ comment.creator.profile.profile_img.url }}" >
                                       <!-- ^^^^^   -->
            {{ comment.creator.username }}
              <!-- ^^^^^   -->
            {% else  %}
            <img src="https://image.freepik.com/free-vector/no-translate-detected_1053-593.jpg">
            {{ user.username }}
            {% endif %}
        </div>
        <div class="commentText">

            <p class="">{{ comment.body }}</p> <span class="date sub-text">{{comment.created_at}}</span>
        </div>
    </li>