Django模板标签 - 试图让用户删除自己的评论

时间:2018-05-02 17:08:20

标签: django django-templates

我是Django的新手。这看起来很基本,但我似乎无法弄清楚这里出了什么问题。

<div class="comment">
  <h2 class="commenter">{{ comment.user }}</h2>
  <p class="commentdate">{{ comment.created }}</p>
  <p class="commentbody">{{ comment.body }}</p>
  "{{ comment.user }}" "{{ user.username }}"
  {% ifequal commment.user user.username %}
  <p><a href="#">Delete comment</a></p>
  {% endifequal %}
</div>

我希望仅当登录用户与发表评论的用户相同时才会显示删除按钮。 {{comment.user}}和{{user.username}}打印相同的结果(这只是一条测试线,可以看到存储在这些中的内容),但{%ifequal comment.user user.username%}标记是由于某种原因评估为假。我究竟做错了什么?它可能是数据类型问题吗?如果是这样,我不确定如何在模板标签中解决这个问题。

1 个答案:

答案 0 :(得分:0)

通过django模板,您可以访问request

基本上,您可以使用request访问登录用户 如果comment.userdjango.auth.models.User的实例。

逻辑可以是:

  

注意:这不会阻止用户删除其他评论,所有逻辑都需要在后端完成。确保当前用户拥有评论

<div class="comment">
    <h2 class="commenter">{{ comment.user }}</h2>
    <p class="commentdate">{{ comment.created }}</p>
    <p class="commentbody">{{ comment.body }}</p>

    "{{ comment.user }}" "{{ user.username }}"

     {% if request.user == comment.user %}
         <p><a href="#">Delete comment</a></p>
     {% endif %}

     <!-- or with ifequal templatetag -->
     {% ifequal comment.user request.user %}
         <p><a href="#">Delete comment</a></p>
     {% endifequal %}


</div>