Django i18n特定行为设置

2024-09-27 00:22:20 发布

您现在位置:Python中文网/ 问答频道 /正文

我需要django i18n像这样工作: site.com/lang/将会话语言设置为lang,将其写入cookie并将用户重定向到site.com。如果它是第一次访问并且没有指定前缀,则显示默认的lang。你知道吗

很抱歉提出这样一个基本的问题,例如网址.py中间商可能会非常感激。你知道吗


Tags: django用户pycom语言langcookiesite
1条回答
网友
1楼 · 发布于 2024-09-27 00:22:20

Django提供了一个非常类似于您正在尝试的解决方案。它叫做The set_language Redirect view。不同之处在于,它希望将语言作为POST参数。您可能需要考虑使用此解决方案,而不是自定义解决方案。你知道吗

如果这不是您想要的,您可以编写自己的重定向视图,将语言设置为lang,并重定向到site.com

class SetLanguageView(RedirectView):
    url = reverse('home')

    def get(self, request, *args, **kwargs):
        response = super(self, SetLanguageView).get(request, *args, **kwargs)
        lang = kwargs.get('lang')
        if lang:
            # To set the language for this session
            request.session[settings.LANGUAGE_SESSION_KEY] = lang
            # To set it as a cookie
            response.set_cookie(settings.LANGUAGE_COOKIE_NAME, lang,
                                max_age=settings.LANGUAGE_COOKIE_AGE,
                                path=settings.LANGUAGE_COOKIE_PATH,
                                domain=settings.LANGUAGE_COOKIE_DOMAIN)
        return response

urls.py中,你会得到

urlpatterns = patterns('',
    url(r'^(?P<lang>\w+)/$', RedirectView.as_view(), name='lang_redirect'),

相关问题 更多 >

    热门问题