2011-11-15 25 views
0

djangio-localeurlを使用して、自分のURLに基​​づいてロケールを切り替えることができます。それはちょっとした問題からかなりうまく動作します。django-localeurlを使用しているときにlazy reverseを使用できない

私のクラスベースのビューの中には、遅延逆関数を使用しているものがあります。それ以外の場合は、URLパターンが見つからないというエラーが表示されます。これは、ファイルがインポートされた順序によるものです。 1つの説明を読む:

urls.pyの解析中にビューのデコレータが評価されるため、「鶏卵」の問題があります。 urls.pyが読み込まれないため、reverse() メソッドは使用できません。

django-localeurlモンキーパッチはDjangoの内部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. 

私はこれを引き起こしているかを理解するように見えることができます。ここに私lazy_reverse機能コードです。この問題は、INSTALLED_APPS設定からlocaleurlを削除した時点で消えているようです。

これを解決する方法についてのご意見はありますか?

ありがとうございます。

答えて

2

lazy_reverse関数のエラーです。 lazy_reverse関数をstrの代わりにunicodeを返すように変更していません。以下のようになります。

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

reverse_lazy = lazy(reverse, unicode) 
関連する問題