Python / Flask / MongoDB - сообщение об ошибке: BadRequestKeyError: 400 - Получить список - PullRequest
1 голос
/ 19 марта 2019

Я новичок в этом, поэтому, пожалуйста, прости меня, если я не объяснил должным образом.Я создаю интернет-магазин для проекта.Я хочу иметь список с несколькими вариантами выбора, из которого пользователь может выбирать.Я использую Python, Flask и MongoDB / mlab для хранения и извлечения данных.Пока это выглядит так:

@app.route('/update_item/<item_id>', methods=['POST'])
def update_item(item_id):
    store = mongo.db.store
    store.update( {'_id': ObjectId(item_id)},
    {
        'name':request.form['name'],
        'type':request.form['type'],
        'color':request.form['color'],
        'material':request.form['material']
    })
    return redirect(url_for('main_store'))

HTML-код выглядит так:

<form action="{{ url_for('update_item', item_id=item._id) }}" method="POST" class="col s12">
 <select id="material" name="material" value="{{store.material}}">
     <option value="" disabled selected>Select</option>
     <option value="denim" name="denim">Denim</option>
     <option value="cotton" name="cotton">Cotton</option>
     <option value="viscose" name="viscose">Viscose</option>
     <option value="silk" name="silk">Silk</option>
 </select>
</form>

Но я продолжаю получать это сообщение об ошибке

BadRequestKeyError: 400 Bad Request: KeyError: 'material'
Traceback (most recent call last)
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 2309, 
in __call__
return self.wsgi_app(environ, start_response)
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 2295, 
in wsgi_app
response = self.handle_exception(e)
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1741, 
in handle_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 2292, 
in wsgi_app
response = self.full_dispatch_request()
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1815, 
in full_dispatch_request
rv = self.handle_user_exception(e)
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1718, 
in handle_user_exception
reraise(exc_type, exc_value, tb)
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1813, 
in full_dispatch_request
rv = self.dispatch_request()
File "/usr/local/lib/python3.4/dist-packages/flask/app.py", line 1799, 
in dispatch_request
return self.view_functions[rule.endpoint](**req.view_args)
File "/home/ubuntu/workspace/app.py", line 74, in update_item
'material':request.form['material']
File "/usr/local/lib/python3.4/dist- 
packages/werkzeug/datastructures.py", line 431, in __getitem__
raise exceptions.BadRequestKeyError(key)
BadRequestKeyError: 400 Bad Request: KeyError: 'material'

Что такоеЯ делаю не так?«имя», «тип» и «цвет» прекрасно работают сами по себе.Я попробовал ниже, но это не исправило это также.Спасибо.

'material':request.form.getlist['material']

1 Ответ

1 голос
/ 19 марта 2019

Попробуйте это как ваш HTML

<select id="material" name="material" placeholder="Select">
    <option value="denim">Denim</option>
    <option value="cotton">Cotton</option>
    <option value="viscose">Viscose</option>
    <option value="silk">Silk</option>
</select>
...