如何替换LocaleRegexURLResolver(在djangorestframework的更高版本中删除)

时间:2019-07-16 14:07:35

标签: django django-rest-framework django-urls

我目前正在研究从1.11到2.2的Django版本。在此过程中,我还必须更改djangorestframework的版本(至3.9.4),该版本将LocaleRegexURLResolver类从其最新版本中完全删除。 有没有可以代替该课程的课程?我找不到该类的替代品,也找不到该问题的解决方案。

class SiteLocaleRegexURLResolver(LocaleRegexURLResolver):
    """
    Overrides LocaleRegexURLResolver to use specified default language
    by site instead of global default language
    """

    def __init__(
        self, urlconf_name, site, default_kwargs=None, app_name=None, namespace=None,
        prefix_default_language=True
    ):
        super(LocaleRegexURLResolver, self).__init__(
            None, urlconf_name, default_kwargs, app_name, namespace,
        )
        self.prefix_default_language = prefix_default_language
        self.default_language = site.language_code

    @property
    def regex(self):
        language_code = get_language() or self.default_language

        if language_code not in self._regex_dict:
            if language_code == self.default_language and not self.prefix_default_language:
                regex_string = ''
            else:
                regex_string = '^%s/' % language_code
            self._regex_dict[language_code] = re.compile(regex_string, re.UNICODE)
        return self._regex_dict[language_code]

基本上,它更改默认语言。 在英国,站点/ docs /将使用英语,而/ fr / docs /将使用法语。 另一方面,在FR中,/ docs /用法语表示,/ uk / docs /用英语表示

0 个答案:

没有答案