在Django中设置PasswordResetForm的语言? [英] Set language of PasswordResetForm in Django?

查看:120
本文介绍了在Django中设置PasswordResetForm的语言?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在手动重置密码,但想知道如何将语言设置为用户的语言,而不是我自己的语言.我看到有很多额外的上下文字段,但是需要设置哪一个?

I am manually resetting passwords but wonder how to set the language to the user's language instead of my own. I see there are many extra context fields but which one needs to be set?

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中提供.

I have added a field CustomUser.language which would be available in user.language above.

(在表述我的问题并寻找可能性的同时,我找到了可行的解决方案.)

推荐答案

我通过将当前语言(按会话方式)临时设置为用户的语言,从而得出以下解决方案:

I came to the following solution, by setting the current language (session-wise) temporarily to the user's 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)
    # https://stackoverflow.com/questions/2336785/set-language-within-a-django-view/2336889#comment12481631_2336889
    translation.deactivate()
translation.activate(temp_language)
request.LANGUAGE_CODE = translation.get_language()

这篇关于在Django中设置PasswordResetForm的语言?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆