我需要在django中重写url

我需要在django中重写url

问题描述:

当用户选择英语时,我需要将www.example.com/product/1网址重写为www.example.com/en/product/1。 (他会点击一个选择框来切换语言并设置一个名为'语言'的会话)我需要在django中重写url

我不能选择支持此功能的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']) 

Ofcourse,它does not工作。这适用于每个请求。

请帮助我。

谢谢

+1

*.com/questions/9923178/how-do-i-rewrite-this-url-in-django – catherine 2013-04-08 06:22:13

不要自己写这个,用别人的努力工作。

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

==== ====编辑

你并不需要使用Django的CMS,只是安装了它,并用自己的多语种网址中间件。这与django的常规国际化机械接口。

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

+0

嗨托马斯,我们做了大胆的升级到django 1.4这个现有项目的举措。请指导我使用django 1.4 – 2013-04-09 05:25:40

+0

使用区域设置url的教程“要安装它,请在项目的MIDDLEWARE_CLASSES设置中包含'cms.middleware.multilingual.MultilingualURLMiddleware'。” 在页面上,我将你链接到的第一件事 – Thomas 2013-04-09 06:52:13

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

你保持相同的看法,它会简单地拥有不同的网址。我认为这就是你想要的。确保你选择了文档的1.3版本,我相信已经有了一些变化。