当用户选择英语时,我需要将网址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'])
当然,它不起作用。这适用于每个请求。
请帮助我。
谢谢
答案 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版本的文档,我相信已经有了一些变化。