我正在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')),
)
答案 0 :(得分:1)
我发现了这个问题。 如果你有一些处理404页面的中间件,那么这个页面必须返回状态404.如果它将返回其他状态,那么i18n重定向将不起作用。