我想要做什么:我正在尝试使用 unittest 对我 View 中的函数运行测试。
结果:我收到以下错误:
....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())
但我不知道如何解决
最佳答案
最后我解决了这个问题:
from django.utils.translation import gettext as _
至:
from django.utils.translation import ugettext_lazy as _
关于python - 错误 : django. core.exceptions.AppRegistryNotReady : The translation infrastructure. .. 在 python 中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39351908/