Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » Web.py и Jinja2 = UnicodeDecodeError или что я делаю не так? [RSS Feed]

#1 Март 22, 2011 16:38:31

somaniac
От:
Зарегистрирован: 2009-01-30
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Web.py и Jinja2 = UnicodeDecodeError или что я делаю не так?

Помогите разобраться с проблемой.

Использую web.py и jinja2.
При попытке сделать {{ lf.render_css() }} в шаблоне получаю ошибку UnicodeDecodeError:

File “code.py”, line 154, in GET
return render.login(login_form = lf)
File “C:\Python26\lib\site-packages\jinja2-2.5.5-py2.6.egg\jinja2\environment.py”, line 891, in render
return self.environment.handle_exception(exc_info, True)
File “templates\login.html”, line 23, in top-level template code
{{ login_form.render_css() }}
UnicodeDecodeError: ‘ascii’ codec can't decode byte 0xd0 in position 22: ordinal not in range(128)

В консоль отрендеренные поля формы выводятся.
code.py и login.html в utf-8. Jinja2 вроде как изначально использует юникод.

code.py:

# -*- coding: utf-8 -*-

import web
from web.contrib.template import render_jinja
from web import form

urls = (
'/login', 'Login',
)

app = web.application(urls, globals())

render = render_jinja(
'templates',
encoding = 'utf-8',
)

class Login:
login_form = form.Form(
form.Textbox('username', description=u'Логин'),
form.Password('password', description=u'Пароль'),
form.Button('Ok', type='submit', description=u'Ok')
)

def GET(self):
lf = self.login_form()
print lf.render_css()
return render.login(login_form = lf)

if __name__ == "__main__":
app.run()
Спасибо.



Офлайн

#2 Март 22, 2011 16:40:29

somaniac
От:
Зарегистрирован: 2009-01-30
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Web.py и Jinja2 = UnicodeDecodeError или что я делаю не так?

Кстати, не могу понять почему в ошибке фигурирует ‘ascii’ кодек.



Офлайн

#3 Март 22, 2011 17:27:57

o7412369815963
От:
Зарегистрирован: 2009-06-17
Сообщения: 1986
Репутация: +  32  -
Профиль   Отправить e-mail  

Web.py и Jinja2 = UnicodeDecodeError или что я делаю не так?

login_form.render_css() должен возвращать уникод

Офлайн

#4 Март 22, 2011 18:20:03

somaniac
От:
Зарегистрирован: 2009-01-30
Сообщения: 22
Репутация: +  0  -
Профиль   Отправить e-mail  

Web.py и Jinja2 = UnicodeDecodeError или что я делаю не так?

Судя по тому, что поиск ничего не дал, то я делаю что-то не так. Я могу конечно заняться monkey patching'ом и сделать свою версию form.Item.render(), form.Item.noterender() (чтобы можно было делать рендер отдельных полей формы) и form.Form.render_css(). Но возможно, кто-нибудь сталкивался с такой проблемой?



Офлайн

  • Начало
  • » Web
  • » Web.py и Jinja2 = UnicodeDecodeError или что я делаю не так?[RSS Feed]

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version