如何从 jinja 模板添加和删除会话?或者最终如何实现购物车功能?

问题描述 投票:0回答:1

是否有任何方法可以从

sessions
模板中管理(添加和删除)
Jinja
,而不与任何类型的
API
或页面重新加载交互?

我正在为商店网站制作

cart function
,我想将商品存储为:

session['cart'][str(item.id)] = [item.name, item.item_type, item.id]

这是

dictionary
内部的
session
,存储
list
的三个值,我可以使用

访问它
{{ session.cart[item.id|string] }}

在后端很容易,但我想知道我是否可以在内部完成它

Jinja template
,就像这样:

{% set session.cart[item.id|string] = [item.name, item.item_type, item.id] %}

可能吗?

更不用说我想将它与

javascript event listener

一起使用

如果不可能,请告诉我从会话中到达

add
remove
以及
update
中的购物车长度(不带任何
navbar
reload
)的最佳方式是什么。
我最初的算法是创建一个其余 API 路由,如上所述,该路由可以从购物车会话中添加和删除,但我无法使其工作,这是购物车路由代码:

refresh

当我仅使用 API 并发送以下请求时,它将返回一个 
@app.route('/cart/api') def cart_api(): data = flask.request.args data = [data['nm'], data['typ'], data['id']] if flask.request.args.get('act') == '1': flask.session['cart'][data[2]] = data return f"{data[0]} added to cart successfuly." else: flask.session['cart'].remove(data[2]) return f"{data[0]} was not found in session.", 404

并表示

200 status code
,但我的网站上的
item added to cart
上没有
update
main page

	
javascript flask session jinja2 cart
1个回答
0
投票
无法在会话内为会话分配新值 模板。不同之处在于 Jinja 运行在服务器端并且 JavaScript 在客户端运行。

您可以使用JavaScript(AJAX)调用您的端点并更新您的 无需重新加载页面即可加入购物车。

[获取 API][https://developer.mozilla.org/en-US/docs/Web/API/Fetch_API/Using_Fetch] 让您可以选择执行此操作。

Delfi(在评论部分)
© www.soinside.com 2019 - 2024. All rights reserved.