以编程方式调用call_command('dumpdata')后忽略语言设置
问题描述:
我目前以编程方式调用dumpdata以从我的django应用程序中导出数据。以编程方式调用call_command('dumpdata')后忽略语言设置
from django.core.management import call_command
# and various other imports not directly relevant
response = HttpResponse(mimetype='application/json',)
response['Content-Disposition'] = "filename=%s" % backup_name
sys.stdout = response
call_command('dumpdata')
出口效果很好(如果稍微慢)但事后settings.LANGUAGE_CODE被忽略,所有的页面恢复回原来的语言英语。任何想法为什么发生这种情况?
我使用了以下内容: - Python 2.7版 - Django的1.3 - 罗塞塔管理语言翻译
答
这可能是由代码在django.core.management.base.BaseCommand
对象引起的。在代码中的解释是:
# Switch to English, because django-admin.py creates database content
# like permissions, and those shouldn't contain any translations.
# But only do this if we can assume we have a working settings file,
# because django.utils.translation requires settings.
来完成实际的语言切换是代码:
from django.utils import translation
translation.activate('en-us')
谢谢,帮助解决问题。 我已经按照上面的代码使用:'translate.activate(settings.LANGUAGE_CODE)' – macdhuibh
如果用户在会话中更改了它,是否会产生正确的语言? –