【问题标题】:django admin - get_language is getting default language, not active onedjango admin - get_language 正在获取默认语言,而不是活动语言
【发布时间】:2014-12-26 13:40:41
【问题描述】:

我在单独的 js 文件中有一个自定义管理表单验证 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 中获取活动语言?

【问题讨论】:

    标签: python django django-admin


    【解决方案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']
    

    【讨论】:

    • 你为什么要删除HTTP_ACCEPT_LANGUAGE,我在其他地方需要它,我只需要访问admin.py中的请求对象
    • 对不起,这是另一个问题,误解了你的问题。你的问题有很多答案:stackoverflow.com/questions/2683689/…
    【解决方案2】:

    你可以从django.utils.translation.get_language()获取当前语言

    检查文档:

    https://docs.djangoproject.com/en/1.6/topics/i18n/translation/#using-translations-outside-views-and-templates

    【讨论】:

    • 请阅读我的问题,这正是不适合我的原因
    • 这是 django 的奇怪行为。还有两种关于 get_language 的附加方法。可能是他们帮助 'get_language_from_path'、'get_language_from_request'、
    • 是的,但其他两种方法需要一个路径或请求对象,我不知道如何进入 admin.py
    猜你喜欢
    • 2015-04-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多