0

我已经安装了 Django 模型翻译包,几乎一切正常......

唯一没有的是 AJAX 请求,其 JsonResponses 仍然以原始语言返回。我在文档中找不到如何修复它。

我正在使用'django.middleware.locale.LocaleMiddleware'中间件,所以LANGUAGE_CODE选择应该基于请求中的数据(即用户的浏览器设置)。显然,AJAX 请求没有收到备忘录。

有没有办法让服务器知道从 AJAX 请求传入的 LANGUAGE_CODE(除了在 URL 中硬编码)?

4

1 回答 1

0

我在 Django 论坛上得到了答案^_^

我被告知要查看 Content-Language 参数的 XHR 请求(我什至不知道 XHR 有语言参数)。那是我看到内容语言被正确定义的时候。

所以 AJAX 是一条红鲱鱼。

这是我的观点:

obj_list = list(self.object_list.values('fk__name', 'data'))
return JsonResponse({'chart_data': obj_list})

问题是values方法。使用它时,django-modeltranslation不使用创建的字段。

我把它换成了这些:

return JsonResponse(
      {
          "chart_data": [
              {"fk__name": o.fk.name, "data": o.data}
              for o in self.object_list.select_related('fk')
          ]
      }
)

不知道列表理解是否是最佳实践,但现在一切正常!

于 2020-07-14T12:35:05.597 回答