一尘不染

在Django视图中设置语言

django

背景: 付款服务在后台对付款结果执行ping操作时,将调用该视图-之后,我需要以正确的语言发送电子邮件以确认付款,依此类推。我可以从付款服务器的请求中获取语言代码,并希望将其与Django的i18n系统一起使用,以确定以哪种语言发送电子邮件。

因此,我需要在视图中设置django应用程序的语言。然后一次完成我的模板渲染和电子邮件发送。

设置request.session['django_language'] = lang仅在我测试时影响下一个视图。

还有其他方法吗?


阅读 292

收藏
2020-03-31

共1个答案

一尘不染

引用Django语言环境中间件(django.middleware.locale.LocaleMiddleware)中的部分:

from django.utils import translation

class LocaleMiddleware(object):
    """
    This is a very simple middleware that parses a request
    and decides what translation object to install in the current
    thread context. This allows pages to be dynamically
    translated to the language the user desires (if the language
    is available, of course).
    """

    def process_request(self, request):
        language = translation.get_language_from_request(request)
        translation.activate(language)
        request.LANGUAGE_CODE = translation.get_language()

该translation.activate(language)是重要的一点。

2020-03-31