Я пытаюсь вернуть данные из HTML-формы с запросом POST с использованием Flask. По какой-то причине я получаю ошибку 400 Bad Request. Посмотрев на Chrome Dev Tools, я вижу, что все поля формы с тегом ввода являются частью почтового запроса. Тег select с раскрывающимся списком не записывается, и я думаю, что это создает ошибку. Кто-нибудь знает, почему тег select не записывается в почтовом запросе? Любая помощь очень ценится.400 Ошибка запроса на запрос POST с Flask
Вот HTML форма:
<label for="vendor">Select Vendor</label>
<div class="flextable p-b" style="padd">
<div class="flextable-item">
<select class="selectpicker" data-live-search="true" form="addInvoice" name="vendor" id="vendor">
<option>Jack Jaffa & Associates</option>
<option>Jacobs/Doland/Beer LLC</option>
<option>Jenkins & Huntington Inc.</option>
<option>Joseph J. Blake & Associates, Inc.</option>
<option>Langan (Geotechnical)</option>
<option>Madison Realty Capital</option>
<option>McNamara Salvia, Inc</option>
<option>Metropolis Group, Inc</option>
<option>National Grid</option>
</select>
</div>
<div class="flextable-item">
<button type="button" class="btn btn-xs btn-primary-outline">Add vendor</button>
</div>
<label for="invoice_number">Invoice Number:</label>
<input type="text" class="form-control p-b" placeholder="Every vendor invoice # must be unique" name="invoice_number" id="invoice_number">
<label for="invoice_amount">Amount:</label>
<input type="text" class="form-control p-b" placeholder="$0.00" name="invoice_amount" id="invoice_amount">
<label for="invoice_amount">Description:</label>
<input type="text" class="form-control p-b" placeholder="$0.00" width="100%" name="description" id="description">
<div class="spacer"></div>
<div class="flextable">
<div class="flextable-item">
<label for="date_received">Date received:</label>
</div>
<div>
<div class="flextable-item">
<div class="input-group">
<span class="input-group-addon">
<span class="icon icon-calendar"></span>
</span>
<input type="text" value="01/01/2015" class="form-control" data-provide="datepicker" style="width: 200px;" name="date_received" id="date_received">
</div>
</div>
</div>
</div>
</div>
<div class="modal-actions p-t-lg">
<button type="button" class="btn-link modal-action" data-dismiss="modal">Cancel</button>
<button type="submit" class="btn-link modal-action" id="submit" >
<strong>Save + Continue</strong>
</button>
</div>
</form>
Вот Колба питон маршрут:
@app.route('/add_invoice', methods=['GET', 'POST'])
def add_invoice():
""" Method for capturing form data to add invoice items to database"""
if request.method == 'POST':
find_cost_code = 7777 # eventually need code to lookup cost-code from POST request
print request.form['invoice_number']
print request.form['invoice_amount']
print request.form['description']
print request.form['vendor']
print request.form['date_received']
return "This is a test"
ADDED INFO: Так что, если я удалю эту линию, плохой запрос ошибка уходит:
print request.form['vendor']
Это потому, что поле «vendor» является единственным в html-форме, в котором используется тег select для ввода, и эти данные не попадают в словарь post request (который я вижу в Chrome Dev Tool). В запросе POST отсутствует поле, связанное с тегом select. Не знаете, как захватить тэг select в форме данных ...
Нет, вам нужно только это для нескольких полей значений, которые этот выбор не является. Кроме того, это не повлияет на ошибку 400. – davidism