我实际上不明白为什么 {%if%} {%else%} 在那里不起作用。如果作者和用户名相等,我只需要渲染它



实际上,我是Django的新手,所以我不明白为什么if-else语句在这里不起作用。这个代码有什么超级错误吗?

{%extends 'main/base.html'%}
{%block title%}
{{ title  }}
{%endblock%}

{%block content%}
<div class="container-fluid">
<h2>{{user.first_name}}</h2>
<p>{{user.second_name}}</p>
<div class="col">
{%for recel in receipts%}
{%if recel.author is user.username%}
<h2>Receipt: {{recel.title}}</h2>
<h4>Doctor: {{recel.author}}</h4>
{%else%}
<span></span>
{%endif%}
{%endfor%}
</div>
</div>
{%endblock%}

如果您使用django的身份验证。

替换:

{% if recel.author is request.user %}

带有:

{%if recel.author is user.username%}

is检查对象是否为同一对象。您想要检查相等性(如果对象具有相同的值(,这是使用==完成的。

{%if recel.author == user.username%}
{%if recel.author is user.username%}
<h2>Receipt: {{recel.title}}</h2>
<h4>Doctor: {{recel.author}}</h4>
{%else%}
<span></span>
{%endif%}
{%endfor%}

Django的模板语言(DTL(在许多方面与python相似,这个答案更深入地解释了is==之间的差异。

最新更新