python - Django 中的多语言 URL

标签 python django url-routing multilingual

在 Django 中支持多语言 URL 的最佳方式是什么?喜欢:

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

我应该在 urls.py 中使用多语言吗:

(r'^%s/(?P<slug>[-w]+)/$' % _('user'), 'myapp.view.relatedaction')

这似乎不是一个好的解决方案,我无法让它工作:))

最佳答案

这个解决方案不起作用,因为 urls.py 文件在第一个用户实际可以发出任何请求之前在 Django 服务器中加载一次,因此它必须是与用户无关的文件(任何模块级代码都应该与用户无关,因为它仅加载一次)。

我的猜测是 Django url 解析器在请求中间的某个位置进行 str() 转换,因此您可以使用一些装饰器类:

(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

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

关于python - Django 中的多语言 URL,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3306427/

相关文章:

具有动态功能的 Python 字典命令?

用于 RESTful API 的 YII URL 管理器

php - .htaccess 从本地主机切换到远程服务器

python - 更改 numpy.seterr 默认值?

python - 使用tkinter绘制特定条形图

python - pandas:groupby 多列,连接一列同时添加另一列

javascript - 如何处理 javascript 文件具有它使用的图像的 "relative"路径的情况?

python - 当并非所有类别都存在于多个特征和数据集中时的虚拟变量

python - 使用基于函数的 View 过滤 Geodjango 结果

javascript - AngularJS - 无法显示来自 JSON 的内容