django admin - get_language 获取的是默认语言,而非活动语言
我有一个自定义的管理员表单验证的JavaScript代码,这段代码放在一个单独的js文件里。
我想根据语言来加载合适的js文件,也就是说,如果LANGUAGE_CODE
是'es'
(西班牙语),那么js文件的名字应该是myjsfile_es.js
。
我做了以下操作:
class BlogForm(forms.ModelForm):
class Media:
js = ('js/custom_%s.js' % get_language(),)
实际页面的URL是:
http://127.0.0.1:8000/es/admin/blog/blog/add/
但是get_language
返回的是'en'
(英语),所以我最终加载了错误的js文件custom_en.js
,而不是es
页面需要的。
en
是settings.py中的默认语言。
我该如何在admin.py中获取当前使用的语言呢?
2 个回答
-1
你可以通过 django.utils.translation.get_language()
来获取当前的语言。
查看文档了解更多信息:
1
可能这是因为Django会根据浏览器的设置来获取你的语言。我在我的一个项目中也遇到过同样的问题,后来通过使用那个中间件解决了。
# -*- coding: utf-8 -*-
class IgnoreAcceptLanguageMiddleware(object):
"""
Ignore Accept-Language HTTP headers
"""
def process_request(self, request):
if request.META.has_key('HTTP_ACCEPT_LANGUAGE'):
del request.META['HTTP_ACCEPT_LANGUAGE']