错误:django.core.exceptions.AppRegistryNotReady:python中的翻译基础结构

时间:2016-09-06 14:46:44

标签: python django

我想做什么:我尝试使用unittest为我的视图中的函数运行测试。

结果:我收到以下错误:

.... env / lib / python2.7 / site-packages / django / utils / translation / trans_real.py",第189行,在_fetch中     "翻译基础设施无法在"之前初始化。 django.core.exceptions.AppRegistryNotReady:在应用程序注册表准备好之前,无法初始化转换基础结构。检查您是否在导入时不进行非延迟的gettext调用。

使用的进口商品

import unittest
from django.test import Client
from django.core.wsgi import get_wsgi_application
import os
os.environ.setdefault("DJANGO_SETTINGS_MODULE", "mysite.settings")
import sys
sys.path.append('../../mysite/')
from mysite.settings import *
from views import *
application = get_wsgi_application()

正如您所看到的,我尝试了这个答案并没有成功:appregistrynotready-the-translation-infrastructure-cannot-be-initialized

我也遵循了这个:upgrading-to-django-1-7-getting-appregistrynotready-for-translation-infrastruct

我用ugettext&发现的进口ugettext_lazy:

from django.utils.translation import ungettext, ugettext_lazy as _
from django.utils.translation import ungettext, ugettext, ugettext_lazy as _
from django.utils.translation import ugettext_lazy as _

我将它们改为

from django.utils.translation import ugettext_lazy as _

但它既没有工作

我用ugettext找到的一些代码

return ugettext('%(number)d %(type)s') % {'number': delta.seconds, 100  'type': count(delta.seconds)}

我想知道这是否有问题。

我发现如果我从authentication / models.py中删除了这些行:

last_pass_change = models.DateTimeField(_("last_pass_change"), default=datetime.datetime.now())
last_failed_login = models.DateTimeField(_("last_failed_login"), default=datetime.datetime.now())

但我不知道如何解决它

2 个答案:

答案 0 :(得分:1)

最后我解决了改变:

from django.utils.translation import gettext as _

为:

from django.utils.translation import ugettext_lazy as _

答案 1 :(得分:0)

在从视图和设置导入之前初始化WSGI应用程序。

application = get_wsgi_application()    
from mysite.settings import *
from views import *