मैं का उपयोग कर अजगर में एक छोटी सी वेब सेवा developping हूँ:फ्लास्क - हेडर को यूनिकोड में परिवर्तित नहीं किया जाता है?
- बोतल (v। 0.8)
- तूफान ORM (v 0.19।)
- अपाचे mod_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 <type 'str'>: '00000000-0000-0000-0000-000000000009'
मुझे वास्तव में समझ में नहीं आता है यह हो रहा है और मैं इसके बारे में क्या कर सकता हूं। मैंने सोचा Flask was 100% unicode।
हेडर वैल्यू को डीकोड करना एक त्वरित फिक्स है, यानी uuid = uuid.decode('utf-8')
। क्या यह वास्तव में क्या करने की जरूरत है? यह थोड़ा सा हैक लगता है। क्या यूनिकोड को मैन्युअल रूप से "डीकोड" किए बिना सीधे प्राप्त करने का कोई तरीका नहीं है?
रुचि का हो सकता: http://stackoverflow.com/q/818122/311220 http: // stackoverflow.com/q/7567154/311220 – Acorn