我是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%}标记是由于某种原因评估为假。我究竟做错了什么?它可能是数据类型问题吗?如果是这样,我不确定如何在模板标签中解决这个问题。
答案 0 :(得分:0)
通过django模板,您可以访问request
基本上,您可以使用request
访问登录用户
如果comment.user
是django.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>