Уведомления

Группа в Telegram: @pythonsu
  • Начало
  • » Web
  • » bottle.jinja2_template , вываливается при шаблоне utf-8 с русскими :( [RSS Feed]

#1 Янв. 26, 2010 18:45:19

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

bottle.jinja2_template , вываливается при шаблоне utf-8 с русскими :(

вот код: в шаблоне русский текст в utf-8

# coding: utf-8
from bottle import jinja2_template as template
print template('test1')
при запуске выдает такую ошибку:
>python test1.py 
Traceback (most recent call last):
File "test1.py", line 5, in <module>
print template('test1')
File "/usr/local/lib/python2.6/dist-packages/bottle-0.6.4-py2.6.egg/bottle.py", line 974, in jinja2_template
return template(tpl_name, **kargs)
File "/usr/local/lib/python2.6/dist-packages/bottle-0.6.4-py2.6.egg/bottle.py", line 955, in template
TEMPLATES[tpl] = template_adapter(name=tpl, lookup=lookup)
File "/usr/local/lib/python2.6/dist-packages/bottle-0.6.4-py2.6.egg/bottle.py", line 758, in __init__
self.prepare()
File "/usr/local/lib/python2.6/dist-packages/bottle-0.6.4-py2.6.egg/bottle.py", line 834, in prepare
self.tpl = self.env.get_template(self.filename)
File "/usr/local/lib/python2.6/dist-packages/Jinja2-2.2.1-py2.6.egg/jinja2/environment.py", line 552, in get_template
template = self.loader.load(self, name, self.make_globals(globals))
File "/usr/local/lib/python2.6/dist-packages/Jinja2-2.2.1-py2.6.egg/jinja2/loaders.py", line 108, in load
code = environment.compile(source, name, filename)
File "/usr/local/lib/python2.6/dist-packages/Jinja2-2.2.1-py2.6.egg/jinja2/environment.py", line 435, in compile
source = self._parse(source, name, filename)
File "/usr/local/lib/python2.6/dist-packages/Jinja2-2.2.1-py2.6.egg/jinja2/environment.py", line 378, in _parse
return Parser(self, source, name, filename).parse()
File "/usr/local/lib/python2.6/dist-packages/Jinja2-2.2.1-py2.6.egg/jinja2/parser.py", line 30, in __init__
self.stream = environment._tokenize(source, name, filename, state)
File "/usr/local/lib/python2.6/dist-packages/Jinja2-2.2.1-py2.6.egg/jinja2/environment.py", line 409, in _tokenize
source = self.preprocess(source, name, filename)
File "/usr/local/lib/python2.6/dist-packages/Jinja2-2.2.1-py2.6.egg/jinja2/environment.py", line 403, in preprocess
self.extensions.itervalues(), unicode(source))
UnicodeDecodeError: 'ascii' codec can't decode byte 0xd0 in position 0: ordinal not in range(128)
судя по ошибке, jinja пытается из какой-то 8-битной кодировки сделать уникод.

а если запускать из самого еклипса, то все нормально работает!

документации мало по bottle, через поисковики фиг че найдешь - одни бутылки предлгают

Отредактировано (Янв. 26, 2010 18:47:55)

Офлайн

#2 Янв. 27, 2010 06:24:00

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

bottle.jinja2_template , вываливается при шаблоне utf-8 с русскими :(

подрубил джинжу отдельно - все нормально работает, видимо в боттле как-то криво интегрировано с темплейтами ( интегрированное мако тоже не робит )

@route('/2')
def main2():
response.content_type = 'text/html; charset=utf-8'
from jinja2 import Environment, FileSystemLoader
env = Environment(loader=FileSystemLoader('views'))
return env.get_template('test1.tpl').render()

Отредактировано (Янв. 27, 2010 06:24:46)

Офлайн

#3 Янв. 27, 2010 07:29:39

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

bottle.jinja2_template , вываливается при шаблоне utf-8 с русскими :(

все, я нашел баг в библиотеке Bottle 0.6.4:

class Jinja2Template(BaseTemplate):
def loader(self, name):
if not name.endswith(".tpl"):
for path in self.lookup:
fpath = os.path.join(path, name+'.tpl')
if os.path.isfile(fpath):
name = fpath
break
f = open(name)
try: return f.read()
finally: f.close()
при чтении файла содержимое нужно декодировать в уникод (строка 847):
        try: return f.read().decode('utf-8')
сейчас отпишу автору на его немецки форум…

Офлайн

#4 Янв. 27, 2010 14:13:34

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

bottle.jinja2_template , вываливается при шаблоне utf-8 с русскими :(

Офлайн

  • Начало
  • » Web
  • » bottle.jinja2_template , вываливается при шаблоне utf-8 с русскими :([RSS Feed]

Board footer

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

Powered by DjangoBB

Lo-Fi Version