首页 > 解决方案 > Flask 模板在页面加载时执行 HTML onclick 功能

问题描述

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

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

应用程序.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)

标签: pythonhtmlflaskjinja2

解决方案


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

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


推荐阅读