Невозможно ленивый вспять при использовании django-localeurl - PullRequest
0 голосов
/ 15 ноября 2011

Я использую djangio-localeurl для обеспечения переключения локали на основе моих URL.Он отлично работает, за исключением небольшого сбоя.

В некоторых моих представлениях на основе классов я использовал функцию отложенного реверсирования, в противном случае я получаю ошибки об отсутствующих шаблонах URL.Это было что-то из-за порядка, в котором файлы были импортированы.Одно объяснение гласит:

Так как декораторы ваших представлений оцениваются во время синтаксического анализа urls.py, у вас есть проблема «куриное яйцо».Метод reverse () нельзя использовать, так как urls.py не читается.

Кажется, что django-localeurl monkey-patches исправляет внутреннюю функцию reverse Джанго.Это изменение работает нормально, но моя функция lazy_reverse вызывает у меня проблемы.Теперь, когда я запускаю свои тесты, я получаю ошибки в местах, где я использовал эту функцию lazy_reverse.Вот мой lazy_reverse код функции:

from django.utils.functional import lazy
from django.core import urlresolvers

reverse_lazy = lambda name=None, *args : lazy(urlresolvers.reverse, str)(name, args=args)

Ошибка, которую я продолжаю получать:

TypeError: Lazy object returned unexpected type.

Кажется, я понимаю, что вызывает это.Эта проблема, кажется, исчезает, когда я удаляю localeurl из моего INSTALLED_APPS параметра.

Любые идеи о том, как решить эту проблему?

Спасибо

1 Ответ

2 голосов
/ 17 ноября 2011

Кажется, это была ошибка в функции lazy_reverse. Я не изменил свою функцию lazy_reverse, чтобы она возвращала unicode вместо str. Вот как это выглядит:

from django.utils.functional import lazy
from django.core.urlresolvers import reverse

reverse_lazy = lazy(reverse, unicode) 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...