0

私はdjangio-localeurlを使用して、URLに基​​づいてロケールを切り替えています。少しのしゃっくりを除けば、ほとんど問題なく動作します。

クラスベースのビューの一部では、レイジー逆関数を使用しています。そうしないと、URLパターンの欠落に関するエラーが発生します。これは、ファイルがインポートされた順序によるものです。読んだ1つの説明:

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

django-localeurlmonkey-がDjangoの内部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設定から削除するとすぐに消えるようです。

これを解決する方法について何かアイデアはありますか?

ありがとう

4

1 に答える 1

2

どうやらlazy_reverse関数のエラーだったようです。の代わりにlazy_reverse戻るように関数を変更していません。外観は次のとおりです。unicodestr

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

reverse_lazy = lazy(reverse, unicode) 
于 2011-11-17T09:23:30.523 に答える