Django url国际化不在生产模式下工作

时间:2014-09-11 18:00:19

标签: django url internationalization

我正在django 1.4中编程一个支持多语言(法语和英语)的站点。

在调试模式下一切正常。然后我转到生产模式(DEBUG = False),网址不再有效。

实施例。 :在调试模式下,当我请求页面/ agricole /时,django会自动重定向到/ fr / agricole。

但在生产模式下,它会发送错误而不再重定向页面。

我搜索了网页,检查了LocaleMiddleware,就像django文档和所有内容上所述,但它仍然失败。

我无法在模板中硬编码/ fr / *,因为它会打破多语言支持。 并且手动编写重定向的重定向器,并不干净。

我想念什么?模板标签?一个网址配置?

我的

MIDDLEWARE_CLASSES = (
    'django.contrib.sessions.middleware.SessionMiddleware',
    'django.middleware.locale.LocaleMiddleware',
    'django.middleware.common.CommonMiddleware',
    'django.middleware.csrf.CsrfViewMiddleware',
    'django.contrib.auth.middleware.AuthenticationMiddleware',
    'django.contrib.messages.middleware.MessageMiddleware',
    'django.middleware.doc.XViewMiddleware',
    'cms.middleware.page.CurrentPageMiddleware',
    'cms.middleware.user.CurrentUserMiddleware',
    'cms.middleware.toolbar.ToolbarMiddleware',
    'cms.middleware.language.LanguageCookieMiddleware',
)

和我的url.py

from django.conf.urls.defaults import *
from django.conf.urls.i18n import i18n_patterns
from django.contrib import admin
from django.conf import settings
from django.views.generic import RedirectView

admin.autodiscover()

import annonces.views as annonces

urlpatterns = i18n_patterns('',
    url(r'.*register/$', 'annonces.register', name='register'),
    url(r'^admin/', include(admin.site.urls)),
    url(r'accounts/profile/$', RedirectView.as_view(url='/')),
    url(r'^favicon\.ico$', RedirectView.as_view(url='static/favicon.ico')),
    url(r'^media/(?P<path>.*)$', 'django.views.static.serve',
        {'document_root': settings.MEDIA_ROOT, 'show_indexes': True}),
    (r'^accounts/', include('registration.backends.simple.urls')),
    (r'^tinymce/', include('tinymce.urls')),
    url(r'^longlat/(.*)$', 'annonces.longlat', name='longlat'),
    url(r'^', include('cms.urls')),
)

1 个答案:

答案 0 :(得分:1)

我发现了这个问题。 如果你有一些处理404页面的中间件,那么这个页面必须返回状态404.如果它将返回其他状态,那么i18n重定向将不起作用。