【发布时间】:2012-07-14 03:48:49
【问题描述】:
我的项目有这个中间件设置:
MIDDLEWARE_CLASSES = (
'django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
# Uncomment the next line for simple clickjacking protection:
# 'django.middleware.clickjacking.XFrameOptionsMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware',
)
对于本地开发,我设置了一个 local_settings.py 模块,它将中间件设置重新定义为:
MIDDLEWARE_CLASSES = (
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
)
这里我只是去掉缓存相关的中间件,只是为了开发。
在我的 Apache 部署中,local_settings.py 仅重新定义 DEBUG(到 False)和 DATABASES 字典。
我什至在项目的生产 virtualenv(Apache 服务器使用的那个)中安装了 IPython 并执行了这个:
In [1]: from django.conf import settings
In [2]: settings.MIDDLEWARE_CLASSES
Out[2]:
('django.middleware.cache.UpdateCacheMiddleware',
'django.middleware.locale.LocaleMiddleware',
'django.middleware.common.CommonMiddleware',
'django.contrib.sessions.middleware.SessionMiddleware',
'django.middleware.csrf.CsrfViewMiddleware',
'django.contrib.auth.middleware.AuthenticationMiddleware',
'django.contrib.messages.middleware.MessageMiddleware',
'django.contrib.flatpages.middleware.FlatpageFallbackMiddleware',
'django.middleware.cache.FetchFromCacheMiddleware')
但是,尽管如此,我仍然必须在 URL 中输入语言标识符(如 httpp://mysite.com/en/myview/)才能访问使用 from django.conf.urls.i18n.i18n_patterns 的任何 URL。 django.middleware.locale.LocaleMiddleware 的功能之一就是做到这一点,当访问没有语言代码前缀的本地化视图时,从用户代理标题中猜测它并重定向到前缀视图。
如何调试发生了什么?
【问题讨论】:
标签: django localization django-middleware url-pattern