2015-08-27 3 views
0

мне нужно Джанго i18n работать так: site.com/lang/ установить язык сеанса lang, записывает его в печенье и перенаправляет пользователя site.com. Если это первый посетитель, а префикс не указан, отображается lang по умолчанию.Джанго настройки i18n конкретное поведение

Извините за такой базовый вопрос, пример urls.py и middlewares, возможно, будет чрезвычайно оценен.

ответ

0

Django поставляется с довольно похожим решением того, что вы пытаетесь сделать. Это называется The set_language Redirect view. Разница в том, что он ожидает, что язык будет как параметр POST. Возможно, вы захотите рассмотреть вопрос об использовании этого решения по сравнению с обычным решением.

Если это не то, что вы ищете, вы можете написать свой собственный Перенаправление View, что бы установить язык 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'), 
Смежные вопросы