0

当用户选择英语时,我需要将网址 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

不要自己写,用别人的努力。

首先尝试django-cms的解决方案。

==== 编辑 ====

您不需要使用 django-cms,只需安装它并使用他们的多语言 URL 中间件。这与 django 的常规国际化机制接口。

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

于 2013-04-08T05:29:29.997 回答
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 回答