Уведомления

Группа в Telegram: @pythonsu

#1 Янв. 9, 2008 02:01:08

qewerty
От:
Зарегистрирован: 2007-12-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Тег cache и потусторонние силы

Вот возникла такая проблема. Сделал я следующее с двумя ключами как это показано тут - http://www.djangoproject.com/documentation/cache/#template-fragment-caching

{% cache 100000 blah_blah request.user.id %}
...
{% endcache %}
И оно дало это,

UnicodeDecodeError at /blah_blah/
'ascii' codec can't decode byte 0xd0 in position 444: ordinal not in range(128)
Что сначало ввело мня в недоумение и заставило некоторое время копать не в том направлении. А оказалось-то просто переменная request не существовала в шаблоне, зато была просто user и вот это уже работало нормально.

{% cache 100000 blah_blah user.id %}
...
{% endcache %}
Очевидно, что облом наступал в вызове resolve_variable(var, context) в файле …/django/templatetags/cache.py, где var есть “request.user.id”, которой нет в контексте. Но почему возникала UnicodeDecodeError, а не VariableDoesNotExist, всё ещё оставалось загадкой.

Оказалось, проблема в самом классе VariableDoesNotExist, который лежит тут /home/qewerty/src/from-repo/django/trunk/django/template/__init__.py, а именно в его методе __str__

def __str__(self):
return self.msg % self.params
Т.е. генерится VariableDoesNotExist, который потом сам выплёвывает UnicodeDecodeError и вносит в процесс отладки страшную путаницу.
Я так понимаю, что как бы оно ни было проблемы с юникодом не должны были дойти до этого места.

Как думаете, что с этим можно сделать? Сёдняшний trunk.



Отредактировано (Янв. 9, 2008 02:07:30)

Офлайн

#2 Янв. 9, 2008 16:05:56

slivlen
От:
Зарегистрирован: 2006-07-06
Сообщения: 764
Репутация: +  0  -
Профиль   Отправить e-mail  

Тег cache и потусторонние силы

Обновил django до текущей версии и попытался воспроизвести твой пример, в результате получил VariableDoesNotExist.



Офлайн

#3 Янв. 9, 2008 19:14:48

qewerty
От:
Зарегистрирован: 2007-12-19
Сообщения: 8
Репутация: +  0  -
Профиль   Отправить e-mail  

Тег cache и потусторонние силы

slivlen
Обновил django до текущей версии и попытался воспроизвести твой пример, в результате получил VariableDoesNotExist.
Ну значит что-то не так в моей инсталяции и настройках.



Офлайн

Board footer

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

Powered by DjangoBB

Lo-Fi Version