Jinja if 语句不起作用。我不知道如何解决

jinja if statement is not working. I don't know how to fix it

我真的需要帮助! 该代码不显示不同的值。如果代码找到一个连接项,它应该显示一个 link,如果它没有找到一个连接项,它应该显示一个表单。否则:显示一些文本。

html:

{%- if join -%}

        <br>
        <br>
        <br>
        <center>
        <a href="/clubs/{{ club.id }}/add_post" style="text-decoration:none; font-size:18px; color:white; padding:10px 20px 10px 20px; background:#134401;">Add Post +</a>
        </center>
{%- elif not join -%}
        <br>
        <br>
        <br>
                <form action="/clubs/{{ club.id }}" method="POST">
            <center>
            <input type="submit" value="Join" style="width:20%; padding: 10px 5px 10px 5px; background:#1d2d0d; color:white; font-size:20px">
            </center>
        </form>
{%- else -%}
<h1>nope</h1>
{%- endif -%}

函数:

@application.route('/clubs/<int:id>', methods=['GET', 'POST'])
@login_required
def viewClub(id):
    post = Post.query.filter_by(clubId=id)
    club = Club.query.get_or_404(id)
    join = Join.query.filter_by(clubId=id, userId=current_user.id)


    if request.method == 'POST':
        name = club.name
        user = current_user.username
        userId = current_user.id
        clubId = club.id
        createClub = Join(name=name, clubId=clubId, user=user, userId=userId)
        db.session.add(createClub)
        db.session.commit()
        return redirect('/')
    else:
        return render_template('viewClub.html', club=club, post=post, join=join)

您的数据库查询不是 return 查询的结果,它 return 是查询本身。选中时始终为真。

您忘记在查询中添加 .first().all() 等函数。

join = Join.query.filter_by(clubId=id, userId=current_user.id).first()