405 метод не разрешен, добавить в корзину flask python

#python #flask

#python #flask

Вопрос:

Я пытаюсь выполнить метод добавления в корзину, используя flask и sqlalchemy. Я получаю сообщение об ошибке 405, в котором говорится, что метод не разрешен, и, кроме того, не думаю, что метод работает, поскольку я не уверен, как получить идентификатор продукта со страницы продукта при нажатии кнопки в метод добавления в корзину. Вот мой views.py

 @app.route("/index", methods=['GET','POST'])
def addToCart():
    productID = int(request.form.get("productID"))
    isInCart = Cart.query.get(productID)
    userID = session['userID']
    if isInCart is None:
        c = Cart(userID=userID, productID=productID, quantity="1")
        db.session.add(c)
        db.session.commit()
    else:
        q = Cart.query.filter_by(userID=userID, productID=productID).first()
        oldQ = q.Quantity
        newQuantity = Cart.query.filter_by(userID=userID, productID=productID).update(dict(quantity= oldQ   1))
        db.session.commit()
    return render_template("index.html" ) 

и вот мой html, который я использую

 <form class="form" action="" method="post">
                                                                    <input type="submit" value="Add to Cart"/>
                                                                </form> 

Пожалуйста, помогите, он не работает, я использую базу данных корзины и базу данных продуктов. Если есть какие-либо предложения о том, как я могу заставить код работать, пожалуйста, помогите

Ответ №1:

установите действие равным ‘/index’ в вашем html-коде

 <form class="form" action="/index" method="post">
   <input type="submit" value="Add to Cart"/>
</form>
 

Ответ №2:

В вашей форме отсутствует адрес действия. Согласно ответу сохама саоджи, добавление «/ index» к вашему действию должно исправить это, но, возможно, было бы лучше использовать «url_for», чтобы он работал за пределами среды разработки.

 <form class="form" action="{{ url_for('addToCart') }}" method="post">
<input type="submit" value="Add to Cart"/>
</form>