0

ユーザーが英語を選択した場合、URL www.example.com/product/1 を www.example.com/en/product/1 に書き換える必要があります。(彼は選択ボックスをクリックして言語を切り替え、「言語」というセッションを設定します)

この機能をサポートする django 1.4 を選択できません。django 1.3 を使用することをお勧めします。

したがって、ミドルウェアを試してみましたが、結局のところ、ミドルウェアはリクエストごとに実行され、無限ループが発生します。

class urlrewrite():
    def process_request(self, request):
        if 'i' in request.session:
            if request.session.get('i','') != 0:
                print "session"
                request.session['i'] = request.session['i'] + 1
            else:
                request.session['i'] = 0
        else:
            request.session['i'] = 0

        print "request.session['i']", request.session['i']    

        if request.session.get('i','') == SOME_CONSTANT and request.session.get('django_language','') == 'en':
            del request.session['i']
            return HttpResponseRedirect("en/"+request.META['PATH_INFO'])

もちろん、うまくいきません。これは、リクエストごとに実行されます。

親切に私を助けてください。

ありがとうございました

4

2 に答える 2

0

urls.pyこの問題は、ドキュメントのこの部分に示されているように、ファイルでちょっとしたトリックを使用することで解決できます: https://docs.djangoproject.com/en/1.4/ref/generic-views/#django-views-generic-単純なリダイレクト先

同じビューを維持すると、単純に異なる URL になります。それがあなたの望むものだと思います。必ず 1.3 バージョンのドキュメントを選択してください。いくつかの変更があったと思います。

于 2013-04-09T08:38:12.793 に答える
0

これを自分で書くのではなく、他の誰かの努力を利用してください。

最初に django-cmsのソリューションを試してください。

====編集====

django-cms を使用する必要はありません。インストールして、多言語 URL ミドルウェアを使用するだけです。これは、django の通常の国際化機構と連携します。

http://django-cms.readthedocs.org/en/2.3.3/advanced/i18n.html

于 2013-04-08T05:29:29.997 に答える