python - Flask:使用来自 POST 请求的响应呈现 jinja 模板
问题描述
我有一个在线商店,它使用本地存储来跟踪购物车中的哪些产品(存储为cart = [{"id":"1"},{"id":"2"},{"id":"4"}]
)。当用户导航到 cart.html 时,我想发送cart
到我的后端,生成完整的产品列表,然后在return render_template
调用中使用该列表。
后端cart
收到就好了,可以毫无问题地生成列表,但我无法将列表获取到 cart.html 页面(看起来好像cart
是空的)。POST 请求是否应该不在 cart.html 上,而是通过重定向来解决?如果是这样,我该怎么做?如果可能的话,我想避免在 cart.html 上有一个“加载购物车”按钮。
这是 cart.html 的开头(我尝试将 ajax 调用设置为 async: false,但它并没有阻止页面呈现没有cart
:
{% extends "layout.html" %}
{% block content %}
<script type="text/javascript">
function sendCart() {
$(document).ready(function() {
$.ajax({
url: "{{ url_for('cart', _external=True) }}",
type: 'POST',
data: JSON.stringify(JSON.parse(localStorage.getItem("cart"))),
contentType: "application/json; charset=utf-8",
dataType: "json",
});
})
}
sendCart();
</script>
...
这是我的路线:
@app.route('/cart', methods=['GET', 'POST'])
@login_required
def cart():
cart = []
if request.method == 'POST':
for i in request.json:
cart.append(get_Furniture(int(i['id'])))
return render_template("cart.html", cart_objects = cart)
return render_template("cart.html", cart_objects = cart)
编辑:已解决
我发现使用 ajax 和 localstorage 更容易跳过,而是使用易于在后端访问的 cookie:无需cart
在呈现页面之前生成请求。
解决方案
我发现使用 ajax 和 localstorage 更容易跳过,而是使用易于在后端访问的 cookie:无需请求,我可以在呈现页面之前生成购物车。
推荐阅读
- c++ - Sphere在线评委(生命、宇宙、万物)
- email - 直接从应用程序发送电子邮件,无需打开选择器 (Kotlin)
- javascript - 反应原生:制作动画箭头到手风琴列表的方法是什么?
- python-3.x - 遍历行时如何为“底图”子图设置固定大小?
- python - 在 Pycharm 上为 Ubuntu 20.04 安装 wxPython
- sql - 给定每日每小时数据,如何在 SQL Server 中从上午 8 点到晚上 8 点平均 12 小时范围内的每小时间隔数据?
- r - 使用 lavaan 在 R 中进行交叉滞后面板建模
- typescript - 如何为 lodash/fp 管道传输 Promise.allSettled?(或任何功能,如管道库,例如:p-pipe)
- php - Xdebug 断点在 Sublime Text 3 上不起作用
- reactjs - Using React, how can sibling components best share a state? Should there even be a way to traverse DOM tree...?