Djang中的多语言URL

2024-06-06 17:50:39 发布

您现在位置:Python中文网/ 问答频道 /正文

在Django中支持多语言url的最佳方法是什么?比如:

http://myenglishwebsite.com/user/foo
http://mygermanwebsite.com/benutzer/foo

我应该在中使用multilang吗网址.py比如:

^{pr2}$

这似乎不是一个好的解决方案,我无法使其发挥作用:))


Tags: django方法pycom语言httpurlfoo
3条回答

这个解决方案行不通,因为网址.py在第一个用户真正可以发出任何请求之前,文件在Django服务器中加载了一次,所以它必须是用户独立的文件(任何模块级代码都应该是用户独立的,因为它只加载一次)。在

我猜Django url resolver会在请求的中间某处进行str()强制转换,因此您可以使用一些decorator类:

(URLLangDecorator(r'^%s/(?P<slug>[-w]+)/$', ['user']), 'myapp.view.relatedaction')
class URLLangDecorator:
    def __init__(self, url, params):
        self.url, self.params = url, params

    def __str__(self):
        return self.url % map(_, self.params)
    # Django can also preform "%" operation, so to be safe:
    def __mod__(self, arg):
        return str(self) % arg

这是猜测,所以我不确定它是否有效。在

我知道这是一个老问题,但我正在寻找类似的东西,找到了transurlvania项目。希望有帮助。在

最好的方法是对每种语言使用相同的url。不管怎样,它们都不是供最终用户阅读的。在

你有没有想过当你的url不能用ASCII表示时会发生什么?在

相关问题 更多 >