首页 > 解决方案 > 从会话中获取数据[] Python, Flask

问题描述

我正在尝试使用 Python 和框架 - Flask 为在线商店制作简单的购物车系统。我从 products.html 中的表单获取数据,然后将其写入会话。我在获取这些数据并将其返回到 cart.html 时遇到问题 - 我得到的只是清晰的页面,而不是我添加到购物车的产品名称。

产品.html

    {% for el in products %}
        <p>Name {{ el.product_name }}</p>
        <p>Description {{ el.product_description }}</p>
        <p>Image </p> <img width="200" height="200" src="data:;base64,{{ el.product_img }}">
        <p>Cost: {{ el.product_cost }} тенге.</p>

        <form method="post" action="/cart">
            <input type="hidden" name="cart_prod_name" value="{{ el.product_name }}">
            <input type="submit" value="Add to cart">
        </form>
    {% endfor %}

Python函数cart()

@app.route('/cart', methods=['POST', 'GET'])
def cart():
    if 'cart' not in session:
        session['cart'] = []

    if request.method == 'POST':
        cart_prod_name = request.form['cart_prod_name']
        session['cart'] += cart_prod_name
        return redirect('/cart')

    if request.method == 'GET':
        cart_products = session['cart']
        return render_template('cart.html', cart_products=cart_products)

购物车.html:

{% for cart_product in cart_products %}
    <p>{{ cart_product.order_prod_name }}</p>
{% endfor %}

标签: pythonhtmlsessionflask

解决方案


我解决了这个问题。正是我需要迭代和输出cart_product,而不是调用它来输出。cart_roductscart_productorder_prod_name

固定cart.html

{% for cart_product in cart_products %}
    <p>{{ cart_product }}</p>
{% endfor %}

推荐阅读