Latest posts on Тег cache и потусторонние силы topichttps://python.su/forum/topic/1631/2008-01-09T19:14:48+02:00Веб-технологии :: Django :: Тег cache и потусторонние силы
2008-01-09T19:14:48+02:00qewerty10351<blockquote><em>slivlen</em><br/>Обновил django до текущей версии и попытался воспроизвести твой пример, в результате получил VariableDoesNotExist.</blockquote>Ну значит что-то не так в моей инсталяции и настройках.
Веб-технологии :: Django :: Тег cache и потусторонние силы
2008-01-09T16:05:56+02:00slivlen10334Обновил django до текущей версии и попытался воспроизвести твой пример, в результате получил VariableDoesNotExist.
Веб-технологии :: Django :: Тег cache и потусторонние силы
2008-01-09T02:01:08+02:00qewerty10321Вот возникла такая проблема. Сделал я следующее с двумя ключами как это показано тут - <a href="http://www.djangoproject.com/documentation/cache/#template-fragment-caching">http://www.djangoproject.com/documentation/cache/#template-fragment-caching</a><br/><br/><div class="code"><pre>{% cache 100000 blah_blah request.user.id %}<br/>...<br/>{% endcache %}</pre></div>И оно дало это,<br/><br/><div class="code"><pre>UnicodeDecodeError at /blah_blah/<br/>'ascii' codec can't decode byte 0xd0 in position 444: ordinal not in range(128)</pre></div>Что сначало ввело мня в недоумение и заставило некоторое время копать не в том направлении. А оказалось-то просто переменная request не существовала в шаблоне, зато была просто user и вот это уже работало нормально.<br/><br/><div class="code"><pre>{% cache 100000 blah_blah user.id %}<br/>...<br/>{% endcache %}</pre></div>Очевидно, что облом наступал в вызове resolve_variable(var, context) в файле …/django/templatetags/cache.py, где var есть “request.user.id”, которой нет в контексте. Но почему возникала UnicodeDecodeError, а не VariableDoesNotExist, всё ещё оставалось загадкой.<br/><br/>Оказалось, проблема в самом классе VariableDoesNotExist, который лежит тут /home/qewerty/src/from-repo/django/trunk/django/template/__init__.py, а именно в его методе __str__<br/><br/><div class="code"><pre>def __str__(self):<br/> return self.msg % self.params</pre></div>Т.е. генерится VariableDoesNotExist, который потом сам выплёвывает UnicodeDecodeError и вносит в процесс отладки страшную путаницу.<br/>Я так понимаю, что как бы оно ни было проблемы с юникодом не должны были дойти до этого места.<br/><br/>Как думаете, что с этим можно сделать? Сёдняшний trunk.