Skip to main content
3
davidism
  • 128k
  • 31
  • 417
  • 348
Post Closed as "Duplicate" by davidism flask
edited tags
Link
davidism
  • 128k
  • 31
  • 417
  • 348
Source Link
daydreamer
  • 92.9k
  • 204
  • 477
  • 754

how to access form data using flask?

My login endpoint looks like

@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' 

When I test this using curl, the GET call looks like

⮀ ~PYTHONPATH ⮀ ⭠ 43± ⮀ curl http://127.0.0.1:5000/login/ GET on login not supported 

but on POST, I am not able to access the form data and get 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> 

On the server though, my debug information prints the following

ImmutableMultiDict([("{'uuid': 'admin', 'password': 'admin'}", u'')]) 

where I do print request.form. I am not able to understand where I am doing wrong