Flask 模板在页面加载时执行 HTML onclick 函数

Flask template executes HTML onclick function on page load

我的模板将多张卡片呈现到页面上,我希望每张卡片都有“添加到收藏夹”按钮,以便将卡片信息保存到数据库中 object。问题是当我重新加载页面时它执行所有项目的功能并且根本不响应点击。

cards.html https://codepen.io/bordax/pen/YzWWQrb

app.py

def add_to_favorites(item):
    print(item['name'])

@app.route("/favorites")
def favorites():
    # Array of objects
    data = info_filter(food_data)

    return render_template("cards.html", data=data, add=add_to_favorites)

当您在模板中使用 {{ stuff }} 时,stuff 将作为构建页面的一部分由 Flask 执行。在浏览器看到页面之前,通过评估 {{ }} 块来填充模板发生在服务器端。相反,当用户点击网页上的某些内容时,Flask 不在画面中并且对此类点击一无所知,除非网页明确地做一些事情来通知服务器。

遗憾的是,如果您想响应点击等浏览器事件,您必须编写 JavaScript 代码,并让该代码与您的 Flask 后端通信(例如通过发送 HTTP 请求)。