Спасибо за ответ. Я как раз так и сделала. On 30 April 2010 21:27, andrei <[email protected]> wrote: > #coding: utf-8 > > > form = form.Form( > form.Textbox("surname", description="Фамилия"), > ) > > Потому что id инпута выводится без net.websafe(), ведь оно всё равно > должно быть латинскими буквами. > > Because input's id isn't wrapped in net.websafe(), why would you need > non-Latin id? > > On Apr 30, 3:36 pm, Tanya Gornak <[email protected]> wrote: >> 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\xa >> >> 0\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 >> athttp://groups.google.com/group/webpy?hl=en. > > -- > 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. > >
-- 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.
