Насколько я понимаю из документов , по умолчанию нет поддержки prefix_default_language
в django 1.5 .Так что либо вам нужно отказаться от идеи использования этого, либо вам нужно реализовать это самостоятельно.Если вы выберете последний вариант, вам нужно создать новую функцию i18n_patterns
, также необходимо обновить LocaleRegexURLResolver
внутри нее.Например:
from django.core.urlresolvers import LocaleRegexURLResolver
class CustomLocaleRegexURLResolver(LocaleRegexURLResolver):
def __init__(self, urlconf_name, default_kwargs=None, app_name=None, namespace=None, prefix_default_language=True):
self.prefix_default_language = prefix_default_language
super(LocaleRegexURLResolver, self).__init__(None, urlconf_name, default_kwargs, app_name, namespace)
@property
def regex(self):
language_code = get_language()
if language_code == settings.LANGUAGE_CODE and not self.prefix_default_language:
return re.compile('^')
if language_code not in self._regex_dict:
regex_compiled = re.compile('^%s/' % language_code, re.UNICODE)
self._regex_dict[language_code] = regex_compiled
return self._regex_dict[language_code]
Теперь вам нужно использовать CustomLocaleRegexURLResolver
в пользовательском i18n_patterns
, например:
from django.conf import settings
from django.conf.urls import patterns, url
from django.core.urlresolvers import LocaleRegexURLResolver
def custom_i18n_patterns(prefix, *args, *kwargs):
prefix_default_language = kwargs.get('prefix_default_language', True)
pattern_list = patterns(prefix, *args)
if not settings.USE_I18N:
return pattern_list
return [CustomLocaleRegexURLResolver(pattern_list, prefix_default_language=prefix_default_language)]
Наконец, используйте это в своем URL:
urlpatterns += custom_i18n_patterns('',
url(r'^', include(app_urlpatterns)),
prefix_default_language=False
)
Реализация выполнена на основе кода , доступного здесь .