String that passed throw is u'\u0424\u0430\u043c\u0438\u043b\u0438\u044f'
Traceback from terminal:
Traceback (most recent call last):
File "/home/melandory/project/inquire/web/application.py", line 242,
in process
return self.handle()
File "/home/melandory/project/inquire/web/application.py", line 233,
in handle
return self._delegate(fn, self.fvars, args)
File "/home/melandory/project/inquire/web/application.py", line 412,
in _delegate
return handle_class(cls)
File "/home/melandory/project/inquire/web/application.py", line 387,
in handle_class
return tocall(*args)
File "/home/melandory/project/inquire/application.py", line 22, in GET
return render.formtest(form)
File "/home/melandory/project/inquire/web/template.py", line 868, in __call__
return BaseTemplate.__call__(self, *a, **kw)
File "/home/melandory/project/inquire/web/template.py", line 781, in __call__
return self._join_output(out)
File "/home/melandory/project/inquire/web/template.py", line 787, in
_join_output
for name, value in out:
File "templates/formtest.html", line 6, in __template__
<input type="submit" /> </form>
File "/home/melandory/project/inquire/web/form.py", line 46, in render
out += ' <tr><th><label
for="%s">%s</label></th><td>%s</td></tr>\n' % (i.id,
net.websafe(i.description), html)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position
0: ordinal not in range(128)
On 30 April 2010 15:06, Tanya Gornak <[email protected]> wrote:
> I forgot to write error:
>
> <type 'exceptions.UnicodeDecodeError'> at /
>
> 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
>
> Python /usr/local/lib/python2.6/dist-packages/web/form.py in render, line 43
>
> On 30 April 2010 15:04, melandory <[email protected]> wrote:
>>
>> Hi. I have problem in unicode in forms.
>>
>> This code:
>> myform = form.Form(
>> form.Textbox(u'Фамилия'))
>>
>> Produce Traceback:
>>
>> # /usr/local/lib/python2.6/dist-packages/web/form.py in render
>>
>> 36. out += '<table>\n'
>> 37.
>> 38. for i in self.inputs:
>> 39. html = i.pre + i.render() + self.rendernote(i.note) + i.post
>> 40. if i.is_hidden():
>> 41. out += ' <tr style="display: none;"><th></th><td>%s</td></tr>\n'
>> % (html)
>> 42. else:
>>
>> 43. out += ' <tr><th><label for="%s">%s</label></th><td>%s</td></tr>
>> \n' % (i.id, net.websafe(i.description), html) ...
>>
>> 44. out += "</table>"
>> 45. return out
>> 46.
>> 47. def render_css(self):
>> 48. out = []
>> 49. out.append(self.rendernote(self.note))
>>
>> ▶ Local vars
>> Variable Value
>> html
>> '<input type="text"
>> id="\xd0\xa0\xc2\xa4\xd0\xa0\xc2\xb0\xd0\xa0\xd1\x98\xd0\xa0\xd1\x91\xd0\xa0\xc2\xbb
>> \xd0\xa0\xd1\x91\xd0\xa1\xd0\x8f"
>> name="\xd0\xa0\xc2\xa4\xd0\xa0\xc2\xb0\xd0\xa0\xd1\x98\xd0\xa0\xd1\x91\xd0\xa0\xc2\xbb
>> \xd0\xa0\xd1\x91\xd0\xa1\xd0\x8f"/>'
>> i
>> <web.form.Textbox object at 0x998352c>
>> out
>> '<table>\n'
>> self
>> <web.form.Form instance at 0x998346c>
>> # templates/formtest.html in __template__
>>
>> 0. $def with (form)
>> 1.
>> 2. <form name="main" method="post">
>> 3. $if not form.valid: <p class="error">Try again, AmeriCAN:</p>
>> 4. $:form.render()
>>
>> 5. <input type="submit" /> </form> ...
>>
>> 6.
>>
>> ▶ Local vars
>> Variable Value
>> form
>> <web.form.Form instance at 0x998346c>
>> # /usr/local/lib/python2.6/dist-packages/web/template.py in
>> _join_output
>>
>> 779. out = self.t(*a, **kw)
>> 780. return self._join_output(out)
>> 781.
>> 782. def _join_output(self, out):
>> 783. d = TemplateResult()
>> 784. data = []
>> 785.
>>
>> 786. for name, value in out: ...
>>
>> 787. if name:
>> 788. d[name] = value
>> 789. else:
>> 790. data.append(value)
>> 791.
>> 792. d.__body__ = u"".join(data)
>>
>> ▶ Local vars
>> Variable Value
>> d
>> <TemplateResult: {}>
>> data
>> [u'\n', u'<form name="main" method="post"> \n']
>> name
>> ''
>> out
>> <generator object __template__ at 0x9a49464>
>> self
>> <web.template.Template instance at 0x9a436ac>
>> value
>> u'<form name="main" method="post"> \n'
>> # /usr/local/lib/python2.6/dist-packages/web/template.py in __call__
>>
>> 773. def _compile(self, code):
>> 774. env = self.make_env(self._globals or {}, self._builtins)
>> 775. exec(code, env)
>> 776. return env['__template__']
>> 777.
>> 778. def __call__(self, *a, **kw):
>> 779. out = self.t(*a, **kw)
>>
>> 780. return self._join_output(out) ...
>>
>> 781.
>> 782. def _join_output(self, out):
>> 783. d = TemplateResult()
>> 784. data = []
>> 785.
>> 786. for name, value in out:
>>
>> ▶ Local vars
>> Variable Value
>> a
>> (<web.form.Form instance at 0x998346c>,)
>> kw
>> {}
>> out
>> <generator object __template__ at 0x9a49464>
>> self
>> <web.template.Template instance at 0x9a436ac>
>> # /usr/local/lib/python2.6/dist-packages/web/template.py in __call__
>>
>> 860. normalize_text = staticmethod(normalize_text)
>> 861.
>> 862. def __call__(self, *a, **kw):
>> 863. import webapi as web
>> 864. if 'headers' in web.ctx and self.content_type:
>> 865. web.header('Content-Type', self.content_type, unique=True)
>> 866.
>>
>> 867. return BaseTemplate.__call__(self, *a, **kw) ...
>>
>> 868.
>> 869. def generate_code(text, filename):
>> 870. # parse the text
>> 871. rootnode = Parser(text, filename).parse()
>> 872.
>> 873. # generate python code from the parse tree
>>
>> ▶ Local vars
>> Variable Value
>> a
>> (<web.form.Form instance at 0x998346c>,)
>> kw
>> {}
>> self
>> <web.template.Template instance at 0x9a436ac>
>> web
>> <module 'web.webapi' from '/usr/local/lib/python2.6/dist-packages/web/
>> webapi.pyc'>
>> # /home/melandory/project/inquire/application.py in GET
>>
>> 14. form.Validator('Must be more than 5', lambda x:int(x)>5)),
>> 15. form.Textarea(u'Name'),
>> 16. form.Dropdown(u'Choise', ['mustard', 'fries', 'wine']))
>> 17.
>> 18. class index:
>> 19. def GET(self):
>> 20. form = myform()
>>
>> 21. return render.formtest(form) ...
>>
>> 22.
>> 23. def POST(self):
>> 24. form = myform()
>> 25. if not form.validates():
>> 26. return render.formtest(form)
>> 27. else:
>>
>> ▶ Local vars
>> Variable Value
>> form
>> <web.form.Form instance at 0x998346c>
>> self
>> <application.index instance at 0x998348c>
>> # /usr/local/lib/python2.6/dist-packages/web/application.py in
>> handle_class
>>
>> 379. def handle_class(cls):
>> 380. meth = web.ctx.method
>> 381. if meth == 'HEAD' and not hasattr(cls, meth):
>> 382. meth = 'GET'
>> 383. if not hasattr(cls, meth):
>> 384. raise web.nomethod(cls)
>> 385. tocall = getattr(cls(), meth)
>>
>> 386. return tocall(*args) ...
>>
>> 387.
>> 388. def is_class(o): return isinstance(o, (types.ClassType, type))
>> 389.
>> 390. if f is None:
>> 391. raise web.notfound()
>> 392. elif isinstance(f, application):
>>
>> ▶ Local vars
>> Variable Value
>> args
>> []
>> cls
>> <class application.index at 0x997f59c>
>> meth
>> u'GET'
>> tocall
>> <bound method index.GET of <application.index instance at 0x998348c>>
>> # /usr/local/lib/python2.6/dist-packages/web/application.py in
>> _delegate
>>
>> 404. elif '.' in f:
>> 405. x = f.split('.')
>> 406. mod, cls = '.'.join(x[:-1]), x[-1]
>> 407. mod = __import__(mod, globals(), locals(), [""])
>> 408. cls = getattr(mod, cls)
>> 409. else:
>> 410. cls = fvars[f]
>>
>> 411. return handle_class(cls) ...
>>
>> 412. elif hasattr(f, '__call__'):
>> 413. return f()
>> 414. else:
>> 415. return web.notfound()
>> 416.
>> 417. def _match(self, mapping, value):
>>
>> # /usr/local/lib/python2.6/dist-packages/web/application.py in handle
>>
>> 225.
>> 226. def browser(self):
>> 227. import browser
>> 228. return browser.AppBrowser(self)
>> 229.
>> 230. def handle(self):
>> 231. fn, args = self._match(self.mapping, web.ctx.path)
>>
>> 232. return self._delegate(fn, self.fvars, args) ...
>>
>> 233.
>> 234. def handle_with_processors(self):
>> 235. def process(processors):
>> 236. try:
>> 237. if processors:
>> 238. p, processors = processors[0], processors[1:]
>>
>> ▶ Local vars
>> <web.application.application instance at 0x995ac8c>
>> # /usr/local/lib/python2.6/dist-packages/web/application.py in process
>>
>> 234. def handle_with_processors(self):
>> 235. def process(processors):
>> 236. try:
>> 237. if processors:
>> 238. p, processors = processors[0], processors[1:]
>> 239. return p(lambda: process(processors))
>> 240. else:
>>
>> 241. return self.handle()
>
--
You received this message because you are subscribed to the Google Groups
"web.py" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to
[email protected].
For more options, visit this group at
http://groups.google.com/group/webpy?hl=en.