我想做什么:我尝试使用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())
但我不知道如何解决它
答案 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 *