在 Django 中设置 PasswordResetForm 的语言?
Set language of PasswordResetForm in Django?
我正在手动重置密码,但想知道如何将语言设置为用户的语言而不是我自己的语言。我看到有很多额外的上下文字段,但需要设置哪一个?
for user in qs:
reset_form = PasswordResetForm({'email': user.email})
# reset_form.language?
assert reset_form.is_valid()
reset_form.save(request=request)
我添加了一个字段 CustomUser.language
,它在上面的 user.language
中可用。
(在表达我的问题并寻找可能性时,我找到了可行的解决方案。)
我通过将当前语言(会话方式)临时设置为用户的语言,得出以下解决方案:
from django.utils import translation
temp_language = translation.get_language_from_request(request)
for user in qs:
translation.activate(user.language)
request.LANGUAGE_CODE = translation.get_language()
reset_form = PasswordResetForm({'email': user.email})
assert reset_form.is_valid()
reset_form.save(request=request)
#
translation.deactivate()
translation.activate(temp_language)
request.LANGUAGE_CODE = translation.get_language()
我正在手动重置密码,但想知道如何将语言设置为用户的语言而不是我自己的语言。我看到有很多额外的上下文字段,但需要设置哪一个?
for user in qs:
reset_form = PasswordResetForm({'email': user.email})
# reset_form.language?
assert reset_form.is_valid()
reset_form.save(request=request)
我添加了一个字段 CustomUser.language
,它在上面的 user.language
中可用。
(在表达我的问题并寻找可能性时,我找到了可行的解决方案。)
我通过将当前语言(会话方式)临时设置为用户的语言,得出以下解决方案:
from django.utils import translation
temp_language = translation.get_language_from_request(request)
for user in qs:
translation.activate(user.language)
request.LANGUAGE_CODE = translation.get_language()
reset_form = PasswordResetForm({'email': user.email})
assert reset_form.is_valid()
reset_form.save(request=request)
#
translation.deactivate()
translation.activate(temp_language)
request.LANGUAGE_CODE = translation.get_language()