我需要在django中重写url

时间:2013-04-08 05:06:32

标签: django python-2.7 url-rewriting

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

当然,它不起作用。这适用于每个请求。

请帮助我。

谢谢

2 个答案:

答案 0 :(得分:0)

不要自己写这个,用别人的辛勤工作。

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

====编辑====

您不需要使用django-cms,只需安装它并使用其多语言URL中间件即可。这与django的常规国际化机制相关联。

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

答案 1 :(得分:0)

通过在urls.py文件中使用一个小技巧可以解决此问题,如文档的这一部分所示:https://docs.djangoproject.com/en/1.4/ref/generic-views/#django-views-generic-simple-redirect-to

您保持相同的视图,它将简单地具有不同的URL。我想那就是你想要的。确保你选择了1.3版本的文档,我相信已经有了一些变化。