Как удалить идентификатор языка из URL-адресов django-cms 2.4?
Я выполнил tutorial, чтобы создать новый сайт Django-CMS (2.4). Я использую только один язык (английский).
Существует автоматическая переадресация, включающая идентификатор языка '/en/' в моих URL-адресах на сайте. Как его удалить?
спасибо.
Ответы
Ответ 1
замените эту регистрацию шаблонов:
urlpatterns = i18n_patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('cms.urls')),
)
с этим:
from django.conf.urls import patterns
urlpatterns = patterns('',
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('cms.urls')),
)
В учебнике, на котором вы указали, используется метод i18n_patterns
, который выполняет именно это: добавляет код языка к вашим URL-адресам.
Также обратите внимание, что вы можете безопасно удалить "django.middleware.locale.LocaleMiddleware" и "cms.middleware.language.LanguageCookieMiddleware" из своего MIDDLEWARE_CLASSES, если вы не будете использовать несколько языков.
Ответ 2
@ppetrid ответ по-прежнему верен. Однако, начиная с Django 1.6 patterns
, он больше не доступен. Измените существующий код на это:
from django.conf.urls import patterns
urlpatterns = (
url(r'^admin/', include(admin.site.urls)),
url(r'^', include('cms.urls')),
)
Вы также получите предупреждение, если вы также оставите '',
в шаблонах.
Ответ 3
Если вы хотите сохранить один язык в URL-адресе, например, потому что у вас есть обратные ссылки в Интернете с кодом языка, вы можете просто вывести другой язык в settings.py
LANGUAGES = (
#('en', gettext('en')),
('de', gettext('de')),
)
CMS_LANGUAGES = {
'default': {
'public': True,
'hide_untranslated': False,
'redirect_on_fallback': True,
},
1: [
{
'public': True,
'code': 'de',
'hide_untranslated': False,
'name': gettext('de'),
'redirect_on_fallback': True,
},
# {
# 'public': True,
# 'code': 'en',
# 'hide_untranslated': False,
# 'name': gettext('en'),
# 'fallbacks': ['de'],
# 'redirect_on_fallback': True,
# },
],
}
Таким образом, URL-адрес все еще показывает www.example.com/de/foo.html
. В приведенном выше примере, что /de/
будет потерян, что сделает все ваши URL-адреса в Интернете бессмысленными.
Таким образом, с точки зрения SEO это может быть не самый лучший вариант, если вы уже создали ссылки с кодом языка в нем.
Ответ 4
В django версии 1.8.18 вам просто нужно поместить False
в эту переменную в settings.py
USE_I18N = False
USE_L10N = False