Django:get_language in settings.py
我使用Django的身份验证系统实现了用户登录/注册,但遇到了麻烦,希望有人能帮助我 该网站使用django localeurl,目前使用3种语言运行 我无法将登录重定向传递到正确的语言。 我要做的是将当前语言传递给settings.py中的LOGIN\u REDIRECT\u URL变量,这样就不用:Django:get_language in settings.py,django,Django,我使用Django的身份验证系统实现了用户登录/注册,但遇到了麻烦,希望有人能帮助我 该网站使用django localeurl,目前使用3种语言运行 我无法将登录重定向传递到正确的语言。 我要做的是将当前语言传递给settings.py中的LOGIN\u REDIRECT\u URL变量,这样就不用: LOGIN_REDIRECT_URL = '/accounts/my_account/' 我要的是: LOGIN_REDIRECT_URL = '/%s/accounts/my_account
LOGIN_REDIRECT_URL = '/accounts/my_account/'
我要的是:
LOGIN_REDIRECT_URL = '/%s/accounts/my_account/' % request.LANGUAGE_CODE
这当然不起作用,因为我没有将请求传递给settings.py
有没有一个非常简单和聪明的方法来做到这一点?它总是默认为英语,这是一个大问题。如果用户以西班牙语查看网站,登录后将重定向到英语:/
我的语言设置如下:
gettext = lambda s: s
LANGUAGES = (
('pt', gettext('Portuguese')),
('es', gettext('Spanish')),
('en', gettext('English')),
)
及
因为管理员需要用英语
有人能帮忙吗
谢谢 我想它不会像你试图解决它那样起作用。我将设置登录重定向时调用的视图,并在该视图中确定语言设置等,然后再次重定向到正确的视图+正确的区域设置 我想它不会像你试图解决它那样起作用。我将设置登录重定向时调用的视图,并在该视图中确定语言设置等,然后再次重定向到正确的视图+正确的区域设置 对于我使用的翻译:它适合我使用3种语言和14个位置。看看吧,也许能带你到某个地方。对于我使用的翻译:它有3种语言和14个位置,非常适合我。查看它,可能会带您到某个地方。对于我自己的此类项目,我使用我自己的登录重定向装饰程序,而不是Django提供的,Django总是将我发送到settings.py中定义的静态url。我的i18n装饰器看起来是这样的:
def i18n_login_required(function):
def wrap(request, *args, **kwargs):
if not request.user.is_authenticated():
return HttpResponseRedirect('/%s/accounts/login/?next=%s' % (get_language(), request.GET.get('next', urlquote(request.get_full_path()))))
return function(request, *args, **kwargs)
wrap.__doc__=function.__doc__
wrap.__name__=function.__name__
return wrap
对于我自己的此类项目,我使用自己的login_redirect decorator,而不是Django提供的,Django总是将我发送到settings.py中定义的静态url。我的i18n装饰器看起来是这样的:
def i18n_login_required(function):
def wrap(request, *args, **kwargs):
if not request.user.is_authenticated():
return HttpResponseRedirect('/%s/accounts/login/?next=%s' % (get_language(), request.GET.get('next', urlquote(request.get_full_path()))))
return function(request, *args, **kwargs)
wrap.__doc__=function.__doc__
wrap.__name__=function.__name__
return wrap
我已经试过了,但没有成功:我会再看一看,看看是否能用其他方法解决它。谢谢。我已经试过了,但没有成功:我会再看一看,看看是否能用其他方法解决它。谢谢