首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Flask:使用来自POST-request的响应来呈现jinja模板

Flask:使用来自POST-request的响应来呈现jinja模板
EN

Stack Overflow用户
提问于 2020-04-21 22:26:15
回答 1查看 236关注 0票数 0

我有一个在线商店,它使用本地存储来跟踪购物车中有哪些产品(像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的情况下呈现

代码语言:javascript
运行
复制
{% 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>
...

这是我的路线:

代码语言:javascript
运行
复制
@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和本地存储更容易,而不是使用易于在后端访问的cookie :不需要请求,我可以在呈现页面之前生成cart

EN

Stack Overflow用户

发布于 2020-04-22 19:15:51

我发现跳过使用ajax和本地存储更容易,而不是使用易于在后端访问的cookie :不需要请求,我可以在呈现页面之前生成购物车。

票数 0
EN
查看全部 1 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/61345943

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档