gpt4 book ai didi

python - Jinja2 条件在迭代时无法正常工作

转载 作者:行者123 更新时间:2023-12-01 03:30:35 24 4
gpt4 key购买 nike

我使用 Python、Google App Engine 和 Jinja2 创建了一个博客。我有一个实体,保存谁喜欢某个帖子,不包括帖子作者。我正在迭代所有喜欢某个帖子的用户并进行比较,以便创建该帖子的用户不能喜欢自己的帖子。我还有一个“不喜欢”按钮,只有当有人喜欢某个帖子时才会出现该按钮。我可以喜欢和不喜欢该帖子;用户喜欢某个帖子并且出现“不喜欢”按钮,问题是“喜欢”按钮不会消失,它会出现在“不喜欢”按钮旁边,这会导致用户多次喜欢同一篇帖子,并显示与该帖子一样多的不喜欢按钮用户点击了“喜欢”按钮。变量username是当前登录的用户

{% for like in likes %} 
{% if post.username != username and like.username != username %}
<li>
<form method="POST" id="likeForm">
<input type="hidden" name="likePost" value="{{post.key().id()}}">
<button type="submit" class="btn btn-outline-success btn-sm" form="likeForm">Like</button>
</form>
</li>
{% endif %}
{% if post.username != username and like.username == username %}
<li>
<form method="POST" id="unlikeForm">
<input type="hidden" name="unlikePost" value="{{like.key().id()}}">
<button type="submit" class="btn btn-outline-danger btn-sm" form="unlikeForm">Unlike</button>
</form>
</li>
{% endif %}
{% endfor %}

最佳答案

您误解了代码的行为。显示Like按钮的条件是:

{% if post.username != username and like.username != username %}

这意味着,对于 以外的用户生成的喜欢列表中的每个喜欢,都会显示一个喜欢按钮> 用户名,无论用户名是否喜欢该帖子。可能不是你所追求的。您不应在迭代 like 时显示 Like,如果在迭代所有 like 后您没有显示,则应只显示一次查找由用户名生成的任何内容。

至于多个Unlike按钮 - 我怀疑您没有在帖子上检查username中已有的like按下 Like 按钮,从而在 likes 列表中允许多个这样的 like 实例 - 每个实例都会导致 Unlike > 按钮显示。

我只是在 python 中执行逻辑(比 jinja2 更容易,可能也更快):

if post.username != username:
post.liked = False
for like in likes:
if like.username == username:
post.liked = True
break

在 jinja2 中:

{% if post.username != username %}
{% if post.liked %}
<li>
<form method="POST" id="unlikeForm">
<input type="hidden" name="unlikePost" value="{{like.key().id()}}">
<button type="submit" class="btn btn-outline-danger btn-sm" form="unlikeForm">Unlike</button>
</form>
</li>
{% else %}
<li>
<form method="POST" id="likeForm">
<input type="hidden" name="likePost" value="{{post.key().id()}}">
<button type="submit" class="btn btn-outline-success btn-sm" form="likeForm">Like</button>
</form>
</li>
{% endif %}
{% endif %}

注意:代码片段未经过实际测试...

关于python - Jinja2 条件在迭代时无法正常工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40984723/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com