Я делаю приложение Flask. Там все работает нормально, но возникает проблема, когда форма пытается вставить значения в базу данных. Я отладил код и увидел, что request.method == 'POST'
в add_warehouse()
не срабатывает.
aap.py
# Show Warehouse stocks
@app.route('/dashboard/warehouse', methods=['POST','GET'])
@is_logged_in
def warehouse():
form = Add_Warehouse(request.form)
cur = mysql.connection.cursor()
result = cur.execute('SELECT * from company_warehouse')
data = cur.fetchall()
if result>0:
return render_template('warehouse.html', stocks=data, form=form)
else:
return render_template('warehouse.html',msg='Stock Empty', form=form)
cur.close()
# Add Warehouse Stocks
class Add_Warehouse(Form):
product_name = StringField('Name',[validators.Length(min=5,max=20), validators.DataRequired()])
product_qty = IntegerField('Quantity',[validators.DataRequired()])
product_price = DecimalField('Price',[validators.DataRequired()])
@app.route('/add_warehouse',methods=['POST','GET'])
@is_logged_in
def add_warehouse():
form = Add_Warehouse(request.form)
if request.method == 'POST' and form.validate():
product_name = form.product_name.data
product_qty = form.product_qty.data
product_price = form.product_price.data
app.logger.info(product_name,product_qty,product_price)
cur = mysql.connection.cursor()
cur.execute('INSERT INTO company_warehouse(PRODUCT_NAME,QTY,PRICE_PER_UNIT) VALUES(%s,%s,%s)',(product_name,product_qty,product_price))
mysql.connection.commit()
flash('Product Added !!','success')
return redirect(url_for('warehouse'))
cur.close()
warehouse.html
{% from 'includes/_formhelpers.html' import render_field %}
{% include 'includes/_messages.html' %}
<form method="POST" action="">
<div class="modal-body">
<div class="form-group">{{render_field(form.product_name, class_="form-control")}}</div>
<div class="form-group">{{render_field(form.product_qty, class_="form-control")}}</div>
<div class="form-group">{{render_field(form.product_price, class_="form-control")}}</div>
</div>
<div class="modal-footer">
<button type="submit" class="btn btn-primary">Add Product</button>
<button type="reset" class="btn btn-danger">Reset</button>
</div>
</form>
Это шаблон для приведенного выше кода. Я пытался писать раньше, так как думал, что это создает проблему action = "{{url_for('add_warehouse')}}"
, но ничего не изменилось.