Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/21.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/codeigniter/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django 有没有一种简单的方法来记住当前用户';什么语言?_Django - Fatal编程技术网

Django 有没有一种简单的方法来记住当前用户';什么语言?

Django 有没有一种简单的方法来记住当前用户';什么语言?,django,Django,我有一个多语言网站。更改语言很容易,Django可以完美地处理这一点。问题在于批次。这个但是我需要发送mail=batch=关于“网站新增功能”的命令行 因此: 我需要知道当前用户的语言 我需要换成这种语言 第二点已在文件中解决。问题是#1。我想知道关于多语言,我是否遗漏了什么,Django是否还记得当前用户的语言,我们是否必须自己做。如果是这样,你能让我走上正轨吗 谢谢我的解决方案是:制作一个中间件,检查网站的当前语言以及数据库中用户的语言。如果它们不同,请记住数据库中的语言。仅供参考,我有自

我有一个多语言网站。更改语言很容易,Django可以完美地处理这一点。问题在于批次。这个但是我需要发送mail=batch=关于“网站新增功能”的命令行

因此:

  • 我需要知道当前用户的语言
  • 我需要换成这种语言
  • 第二点已在文件中解决。问题是#1。我想知道关于多语言,我是否遗漏了什么,Django是否还记得当前用户的语言,我们是否必须自己做。如果是这样,你能让我走上正轨吗


    谢谢

    我的解决方案是:制作一个中间件,检查网站的当前语言以及数据库中用户的语言。如果它们不同,请记住数据库中的语言。仅供参考,我有自己的
    Langue
    模型,其中包含有关特定语言的信息,包括
    locale
    ,它是两个字母的本地语言(例如
    en
    fr
    ,…)


    当用户在您的站点上注册时,将其保存在数据库中。@Gocht用户可以在注册后随时更改其语言。这不是有效的解决方案。您不能在模型中创建任何可编辑字段。@Gocht我需要知道用户的选择,因为批处理是在凌晨2点运行的。看看我自己的答案,谢谢你的建议。
    class CheckIfLanguageChangedMiddleware(object):
        """
        Middleware to check if language has changed. 
        Used for remembering the user's choice for batchs files:
        batchs files can't guess each user's language.
        Adds a bit overhead but can't avoid that (I guess).
        """
        @staticmethod
        def process_request(request):
            try:
                p = Personne.objects.get(user__pk=request.user.pk)
                langue = translation.get_language()
                if not p.site_language or p.site_language.locale != langue:
                    try:
                        p.site_language = Langue.objects.get(locale__exact=langue)
                        p.save()
                    except Langue.DoesNotExist:
                        pass
            except Personne.DoesNotExist:
                pass