Моя login
конечная точка выглядитКак получить данные формы с помощью фляжки?
@app.route('/login/', methods=['GET', 'POST'])
def login():
if request.method == 'POST':
print request.form # debug line, see data printed below
user = User.get(request.form['uuid'])
if user and hash_password(request.form['password']) == user._password:
login_user(user, remember=True) # change remember as preference
return redirect('/home/')
else:
return 'GET on login not supported'
Когда я проверить это с помощью curl
, то GET
вызов выглядит
⮀ ~PYTHONPATH ⮀ ⭠ 43± ⮀ curl http://127.0.0.1:5000/login/
GET on login not supported
но на POST
, я не в состоянии получить доступ к данным формы и получить HTTP 400
⮀ ~PYTHONPATH ⮀ ⭠ 43± ⮀ curl -d "{'uuid': 'admin', 'password': 'admin'}" http://127.0.0.1:5000/login/
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2 Final//EN">
<title>400 Bad Request</title>
<h1>Bad Request</h1>
<p>The browser (or proxy) sent a request that this server could not understand.</p>
На сервере, хотя, мой отладочная информация печатает следующую
ImmutableMultiDict([("{'uuid': 'admin', 'password': 'admin'}", u'')])
где я делаю print request.form
. Я не могу понять, где я делаю неправильно
Спасибо @Blender, но вопрос в том, почему я не могу получить доступ к 'uuid', когда я отправляю форму данных клиента? – daydreamer
@daydreamer: Flask отправляет этот ответ только в том случае, если вы получаете доступ к ключу, который не существует в объекте ['request.form'] (http://flask.pocoo.org/docs/quickstart/#the-request-object). Попробуйте использовать 'request.form.get ('uuid', None)'. – Blender
Как уже упоминалось в моем вопросе, мой 'request.form' является' ImmutableMultiDict ([{"uuid ':' admin ',' password ':' admin '}", u' ')]) ' – daydreamer