Заголовки Flask -не конвертируются в юникод?

Я разрабатываю небольшой веб-сервис на python, используя:

  • Flask (v. 0.8)
  • storm ORM (v. 0.19)
  • Apache с модом _wsgi

У меня есть собственный HTTP-заголовок, Unison-UUIDкоторый я использую для получения информация в моей базе.

вот (слегка переписанный для простоты )фрагмент кода, с которым у меня возникли проблемы:

uuid = flask.request.headers['Unison-UUID']
store = storm.locals.Store(my_database)
user = store.get(models.User, uuid)

Класс Userболее или менее похож на этот:

class User(Storm):
    uuid = Unicode(primary=True)
    # Other columns....

Приведенный выше код дает сбой следующим образом:

  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 : '00000000-0000-0000-0000-000000000009'

Я не очень понимаю, почему это происходит и что я могу с этим поделать. Я думал, что Flask на 100 % состоит из юникода .

Быстрое исправление, которое я нашел, состоит в том, чтобы декодировать значение заголовка, то есть uuid = uuid.decode('utf-8'). Это действительно то, что нужно сделать? Это кажется немного хакерским. Нет ли способа получить юникод напрямую, без необходимости «декодировать» его вручную?

7
задан Acorn 12 April 2012 в 15:07
поделиться