I've recently had a pretty annoying issue when using web2py with AngularJS :
By default, AngularJS sends JSON-encoded requests when you use the $http
service, so a POST request would look like this :
"{"firstName":"John"}"
For some reason I don't really understand, web2py natively understands this
JSON request a populates request.vars accordingly.
Why does web2py understand JSON requests ? Aren't POST requests (forms)
supposed to be url-encoded ?
The issue I ended up facing because of this is when AngularJS sends a
request that contains accentuated characters, e.g. :
"{"firstName":"Cédric"}"
When the regular HTML form processing would require something like:
"firstName=C%C3%A9dric"
With the JSON request, web2py ends up populating request.vars like this :
Storage(firstName=u'Cédric')
And so I get tons of *UnicodeEncodeError* when using web2py widgets or the
URL helper...
For instance I have a URL(..., vars=request.vars) in a model and this
raises an Exception (HTTP 500) every time the server receives a
JSON-encoded request with accentuated characters.
*Shouldn't web2py be able to either convert JSON-encoded unicode strings ot
reject them altogether without raising an exception ?*
...for the record : my solution so far was to hack the $http service in
AngularJS into sending url-encoded strings instead of JSON.
I started this post solely because I think there is something wrong going
on here with web2py and because many people post about UnicodeEncodeError
in web2py
--
Resources:
- http://web2py.com
- http://web2py.com/book (Documentation)
- http://github.com/web2py/web2py (Source code)
- https://code.google.com/p/web2py/issues/list (Report Issues)
---
You received this message because you are subscribed to the Google Groups
"web2py-users" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
For more options, visit https://groups.google.com/d/optout.