我正在 django 1.4 中编程一个具有多语言支持(法语和英语)的站点。
在 Debug模式下一切正常。然后我转到生产模式(DEBUG = False)并且网址不再工作。
前任。 : 在 Debug模式下,当我请求页面/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')),
)
最佳答案
我发现了这个问题的问题。
如果您有一些处理 404 页面的中间件,那么此页面必须返回状态 404。如果它将返回其他状态,则 i18n 重定向将不起作用。
关于Django url 国际化在生产模式下不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25794161/