在Flask中,如何从选择字段获取输入?

在Flask中,如何从选择字段获取输入?,flask,Flask,我试图应用我在这个答案中看到的东西,但它不起作用: 我看不出他的情况有什么不同,所以我不明白为什么我的不起作用 这是我的路线: @bp.route('/ecommerce/cart/add/product/<id>', methods=['GET', 'POST']) @login_required def ecommerceCartAdd(id): select = request.form.get('modal-product-quantity') print(s

我试图应用我在这个答案中看到的东西,但它不起作用:

我看不出他的情况有什么不同,所以我不明白为什么我的不起作用

这是我的路线:

@bp.route('/ecommerce/cart/add/product/<id>', methods=['GET', 'POST'])
@login_required
def ecommerceCartAdd(id):
    select = request.form.get('modal-product-quantity')
    print(str(select))
    p = stripe.SKU.retrieve(id)
    product = dict(
        id=p.id,
        prod_id=p.product,
        name=p.attributes.name,
        image=p.image,
        price=convert_price(p.price)
    )
    session['cart'].append(product)
    flash(f"[{product['name']}] added to cart", "info")
    return redirect(url_for('projects.ecommerce'))
这是我的HTML: 我包括了我用来改变显示的JS,以防我搞砸了,尽管我不知道怎么做

另外,请注意,下面的HTML是通过jinja2 include语句放在主页面中的,但是模式显示正确,所以我也不认为这会对它产生什么影响

            <div class="modal-footer">
                <form class="form-inline" method="POST" action="{{ url_for('projects.ecommerceCartAdd', id=p.id) }}">
                    <div class="input-group">

                        <label class="mr-sm-2 float-left" for="prod-quantity-select">Quantity: </label>
                        <select class="custom-select float-left" id="prod-quantity-select" onchange="AdjustQuantity()"
                            name="modal-product-quantity">
                            <option selected value="1">1</option>
                            {% for i in range(2, 100) %}
                            <option value="{{ i }}">{{ i }}</option>
                            {% endfor %}
                        </select>
                    </div>
                    <script>

                        function AdjustQuantity() {
                            var q = document.getElementById("prod-quantity-select");
                            var quantity = q.options[q.selectedIndex].value;

                            document.getElementById("modal-price-label").innerHTML = 'Total: ';
                            document.getElementById("modal-price-counter").innerHTML = '(x' + quantity + ')';
                        }

                    </script>
                    <a href="{{ url_for('projects.ecommerceCartAdd', id=p.id) }}" class="btn btn-primary btn-sm"> Add to
                        cart
                    </a>
                </form>
                <button type="button" class="btn btn-secondary btn-sm" data-dismiss="modal">Close</button>
            </div>
我试着在我把action=url\u放在哪里的地方乱搞。。。将method=POST放在select标记而不是form标记中

无论我做什么,我的产出都是零。我知道路由没有使用POST方法,因为当我将print语句放入条件if request.method=POST中时,它不会打印,但正如我所说的,否则它不会打印

我需要帮助了解如何发布和访问选择字段中的数据


谢谢

有一个ahref假装是一个按钮,因此您没有提交表单

尝试更改此选项:

<a href="{{ url_for('projects.ecommerceCartAdd', id=p.id) }}" class="btn btn-primary btn-sm"> Add to cart </a>
为此:

<button type="submit" class="btn btn-primary btn-sm"> Add to cart </button>

啊哈!那就行了!