twisted / klein

werkzeug + twisted.web
Other
834 stars 120 forks source link

Keys and values in request.args are returned as byes in Python3 #371

Open isaacgr opened 4 years ago

isaacgr commented 4 years ago

With Python3, the keys and values for request.args returned when submitting form data to an app.route are returned as bytes, not strings.

2020-06-29 23:11:10-0400 [-] (Pdb) {b'username': [b'irowell'], b'email': [b'test@gmail.com'], b'password': [b'test']}
request.args['username']
2020-06-29 23:11:21-0400 [-] (Pdb) *** KeyError: 'username'
request.args[b'username']
2020-06-29 23:20:01-0400 [-] (Pdb) [b'irowell']

So either the user would have to convert the kv pairs to string before parsing, or use bytes when looking up values in the dictionary. Is there anythign that handles this natively?

wsanchez commented 4 years ago

Not presently… Klein is very bytes-centric at the moment.

What I think I'd like to see is a deprecation of request.args, and the addition of a request.url which is a Hyperlink URL, and so can access the args through that object instead.