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'),