Python 看看路径前缀;对于/和/dimension/还没有 在会话中查找\u语言键(返回到django\u语言以获得向后兼容性) 查找django\u语言cookie(或在settings.language\u cookie\u NAME中设置的任何内容) 查看浏览器Accept Language标题 使用settings.LANGUAGE\u code
请注意,没有任何内容显式设置会话密钥或cookie;您自己的代码需要这样做。您可以使用来为您执行此操作;web UI中的表单将发布到该视图,以便访问者设置不同的语言 当访问者来到Python 看看路径前缀;对于/和/dimension/还没有 在会话中查找\u语言键(返回到django\u语言以获得向后兼容性) 查找django\u语言cookie(或在settings.language\u cookie\u NAME中设置的任何内容) 查看浏览器Accept Language标题 使用settings.LANGUAGE\u code,python,django,redirect,locale,django-1.5,Python,Django,Redirect,Locale,Django 1.5,请注意,没有任何内容显式设置会话密钥或cookie;您自己的代码需要这样做。您可以使用来为您执行此操作;web UI中的表单将发布到该视图,以便访问者设置不同的语言 当访问者来到/fr/并且还没有显式cookie或会话密钥时,也可以显式设置会话密钥或cookie。您可以在i18n_patterns()url映射(任何/请求都会调用该映射)中附加到^$的视图中执行此操作,而不是现在的重定向。当然,这种观点仍然可以改变方向 即使没有明确设置cookie,您的重定向也至少应该使用请求.LANGUAGE
/fr/
并且还没有显式cookie或会话密钥时,也可以显式设置会话密钥或cookie。您可以在i18n_patterns()
url映射(任何/
请求都会调用该映射)中附加到^$
的视图中执行此操作,而不是现在的重定向。当然,这种观点仍然可以改变方向
即使没有明确设置cookie,您的重定向也至少应该使用请求.LANGUAGE\u code
变量:
url(r'^$', lambda r: redirect('/{}/dimension/'.format(r.LANGUAGE_CODE)), name="home"),
localemidware
负责确定浏览器应使用的语言;它总是为您的浏览器选择en
,您需要找出原因
有关详细信息,请参见,但简短的顺序是:
/
和/dimension/
还没有\u语言
键(返回到django\u语言
以获得向后兼容性)django\u语言
cookie(或在settings.language\u cookie\u NAME中设置的任何内容
)Accept Language
标题settings.LANGUAGE\u code
/fr/
并且还没有显式cookie或会话密钥时,也可以显式设置会话密钥或cookie。您可以在i18n_patterns()
url映射(任何/
请求都会调用该映射)中附加到^$
的视图中执行此操作,而不是现在的重定向。当然,这种观点仍然可以改变方向
即使没有明确设置cookie,您的重定向也至少应该使用请求.LANGUAGE\u code
变量:
url(r'^$', lambda r: redirect('/{}/dimension/'.format(r.LANGUAGE_CODE)), name="home"),
这似乎不是问题所在。我已经清除了所有内容,仍然重定向到默认区域设置。我试过使用基于法语的浏览器,它总是重定向到/fr/dimension/。这里我有一个基于英语的浏览器,所以它总是重定向到/en/dimension/。我想应该是缓存以外的东西。这似乎不是问题所在。我已经清除了所有内容,仍然重定向到默认区域设置。我试过使用基于法语的浏览器,它总是重定向到/fr/dimension/。这里我有一个基于英语的浏览器,所以它总是重定向到/en/dimension/。我想应该是缓存以外的东西。这似乎不是问题所在。我已经清除了所有内容,仍然重定向到默认区域设置。我试过使用基于法语的浏览器,它总是重定向到/fr/dimension/。这里我有一个基于英语的浏览器,所以它总是重定向到/en/dimension/。我想应该是缓存以外的东西。这似乎不是问题所在。我已经清除了所有内容,仍然重定向到默认区域设置。我试过使用基于法语的浏览器,它总是重定向到/fr/dimension/。这里我有一个基于英语的浏览器,所以它总是重定向到/en/dimension/。我想应该是缓存以外的东西。你安装了吗?是的,我安装了:“django.middleware.locale.LocaleMiddleware”你安装了吗?是的,我安装了:“django.middleware.locale.LocaleMiddleware”你安装了吗?是的,我安装了:“django.middleware.locale.LocaleMiddleware”你安装了吗,我会:'django.middleware.locale.localemidleware'我如何捕捉简单的/fr/url并将任何内容放入cookie/session或其他任何东西中?为什么下面的方法不起作用
url(r'^fr/',lambda r:redirect('fr/dimension/'),name=“home”),
@MichaelDeKeyser:您不能将其添加到i18n_模式中,因为它已经引入了/language
前缀。匹配^fr/
意味着/en/fr
等。因此,在处理模式时,无法知道用户要求的区域设置是什么?@MichaelDeKeyser:更新了一点答案。任何url(r'^fr/')
模式都必须声明为常规url映射,而不是在i18n\u patterns()
映射中声明。@MichaelDeKeyser:如果用户明确要求/fr/
,则请求。LANGUAGE\u code
将设置为fr
。但是重定向到/dimension/
将不包括语言代码。为重定向到//dimension
的^$
创建一个视图。如何捕获简单的/fr/url并将任何内容放入cookie/session或其他任何内容?为什么下面的方法不起作用url(r'^fr/',lambda r:redirect('fr/dimension/'),name=“home”),
@MichaelDeKeyser:您不能将其添加到i18n_模式中,因为它已经引入了/language
前缀。匹配^fr/
意味着/en/fr
等。因此,在处理模式时,无法知道用户要求的区域设置是什么?@MichaelDeKeyser:更新了一点答案。任何url(r'^fr/')
模式都必须声明为常规url映射,而不是在i18n_patterns()
映射中声明。@MichaelDeKeyser:如果用户明确要求/fr/
,则请求.LANGUA