AJAX 请求的 Django 模型翻译
Django modeltranslation for AJAX request
我已经安装了 Django modeltranslation 包,几乎一切正常...
唯一没有的是 AJAX 请求,其 JsonResponses 仍以原始语言返回。我在文档中找不到如何修复它。
我正在使用 'django.middleware.locale.LocaleMiddleware'
中间件,因此 LANGUAGE_CODE
选择应基于请求中的数据(即用户的浏览器设置)。显然,AJAX 个请求没有收到备忘录。
有没有办法让服务器知道来自 AJAX 请求的 LANGUAGE_CODE(除了在 URL 中硬编码)?
我在Django论坛上得到了答案^_^
我被告知要查看 Content-Language 参数的 XHR 请求(我什至不知道 XHR 有语言参数)。那是我看到 Content-Language 被正确定义的时候。
所以 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')
]
}
)
不知道列表理解是否是最佳实践,但现在一切正常!
我已经安装了 Django modeltranslation 包,几乎一切正常...
唯一没有的是 AJAX 请求,其 JsonResponses 仍以原始语言返回。我在文档中找不到如何修复它。
我正在使用 'django.middleware.locale.LocaleMiddleware'
中间件,因此 LANGUAGE_CODE
选择应基于请求中的数据(即用户的浏览器设置)。显然,AJAX 个请求没有收到备忘录。
有没有办法让服务器知道来自 AJAX 请求的 LANGUAGE_CODE(除了在 URL 中硬编码)?
我在Django论坛上得到了答案^_^
我被告知要查看 Content-Language 参数的 XHR 请求(我什至不知道 XHR 有语言参数)。那是我看到 Content-Language 被正确定义的时候。
所以 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')
]
}
)
不知道列表理解是否是最佳实践,但现在一切正常!