estoy desarrollando un pequeño servicio web en Python usando:Frasco: ¿los encabezados no se convierten a Unicode?
- Frasco (v. 0.8)
- ORM tormenta (v 0.19.)
- Apache con mod_wsgi
tengo un encabezado HTTP personalizado, Unison-UUID
que estoy usando en algún momento para recuperar información en mi base de datos.
aquí está el (ligeramente reescrito por simplicidad) fragmento que estoy teniendo problemas con:
uuid = flask.request.headers['Unison-UUID']
store = storm.locals.Store(my_database)
user = store.get(models.User, uuid)
La clase User
es más o menos así:
class User(Storm):
uuid = Unicode(primary=True)
# Other columns....
El código anterior falla en De la siguiente manera:
File "/Users/lum/Documents/unison-recsys/www/api/unison/unison.py", line 27, in decorated
user = g.store.get(models.User, uuid)
File "/Users/lum/Documents/unison-recsys/venv/lib/python2.6/site-packages/storm/store.py", line 165, in get
variable = column.variable_factory(value=variable)
File "/Users/lum/Documents/unison-recsys/venv/lib/python2.6/site-packages/storm/variables.py", line 396, in parse_set
% (type(value), value))
TypeError: Expected unicode, found <type 'str'>: '00000000-0000-0000-0000-000000000009'
Realmente no entiendo por qué esto está sucediendo y lo que puedo hacer al respecto. Pensé Flask was 100% unicode.
Una solución rápida que encontré es decodificar el valor del encabezado, es decir, uuid = uuid.decode('utf-8')
. ¿Es esto realmente lo que debe hacerse? Esto parece un poco hackish. ¿No hay forma de obtener unicode directamente, sin tener que "decodificarlo" manualmente?
Puede ser de interés: http://stackoverflow.com/q/818122/311220 http: // stackoverflow.com/q/7567154/311220 – Acorn