アプリにアクセスしようとすると、次のエラーが発生します。
AppRegistryNotReady:アプリレジストリの準備ができるまで、翻訳インフラストラクチャを初期化できません。インポート時に遅延のないgettext呼び出しを行わないことを確認してください
これが私のwsgi.pyファイルです:
"""
WSGI config for Projectizer project.
It exposes the WSGI callable as a module-level variable named ``application``.
For more information on this file, see
https://docs.djangoproject.com/en/1.7/howto/deployment/wsgi/
"""
import os
os.environ.setdefault("Django_SETTINGS_MODULE", "Projectizer.settings")
from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
そして、ここにスタックトレースがあります。
mod_wsgi (pid=28928): Exception occurred processing WSGI script '/var/www/projectizer/Apache/Django.wsgi'.
Traceback (most recent call last):
File "/usr/local/lib/python2.7/dist-packages/Django/core/handlers/wsgi.py", line 187, in __call__
response = self.get_response(request)
File "/usr/local/lib/python2.7/dist-packages/Django/core/handlers/base.py", line 199, in get_response
response = self.handle_uncaught_exception(request, resolver, sys.exc_info())
File "/usr/local/lib/python2.7/dist-packages/Django/core/handlers/base.py", line 236, in handle_uncaught_exception
return debug.technical_500_response(request, *exc_info)
File "/usr/local/lib/python2.7/dist-packages/Django/views/debug.py", line 91, in technical_500_response
html = reporter.get_traceback_html()
File "/usr/local/lib/python2.7/dist-packages/Django/views/debug.py", line 350, in get_traceback_html
return t.render(c)
File "/usr/local/lib/python2.7/dist-packages/Django/template/base.py", line 148, in render
return self._render(context)
File "/usr/local/lib/python2.7/dist-packages/Django/template/base.py", line 142, in _render
return self.nodelist.render(context)
File "/usr/local/lib/python2.7/dist-packages/Django/template/base.py", line 844, in render
bit = self.render_node(node, context)
File "/usr/local/lib/python2.7/dist-packages/Django/template/debug.py", line 80, in render_node
return node.render(context)
File "/usr/local/lib/python2.7/dist-packages/Django/template/debug.py", line 90, in render
output = self.filter_expression.resolve(context)
File "/usr/local/lib/python2.7/dist-packages/Django/template/base.py", line 624, in resolve
new_obj = func(obj, *arg_vals)
File "/usr/local/lib/python2.7/dist-packages/Django/template/defaultfilters.py", line 769, in date
return format(value, arg)
File "/usr/local/lib/python2.7/dist-packages/Django/utils/dateformat.py", line 343, in format
return df.format(format_string)
File "/usr/local/lib/python2.7/dist-packages/Django/utils/dateformat.py", line 35, in format
pieces.append(force_text(getattr(self, piece)()))
File "/usr/local/lib/python2.7/dist-packages/Django/utils/dateformat.py", line 268, in r
return self.format('D, j M Y H:i:s O')
File "/usr/local/lib/python2.7/dist-packages/Django/utils/dateformat.py", line 35, in format
pieces.append(force_text(getattr(self, piece)()))
File "/usr/local/lib/python2.7/dist-packages/Django/utils/encoding.py", line 85, in force_text
s = six.text_type(s)
File "/usr/local/lib/python2.7/dist-packages/Django/utils/functional.py", line 144, in __text_cast
return func(*self.__args, **self.__kw)
File "/usr/local/lib/python2.7/dist-packages/Django/utils/translation/__init__.py", line 83, in ugettext
return _trans.ugettext(message)
File "/usr/local/lib/python2.7/dist-packages/Django/utils/translation/trans_real.py", line 325, in ugettext
return do_translate(message, 'ugettext')
File "/usr/local/lib/python2.7/dist-packages/Django/utils/translation/trans_real.py", line 306, in do_translate
_default = translation(settings.LANGUAGE_CODE)
File "/usr/local/lib/python2.7/dist-packages/Django/utils/translation/trans_real.py", line 209, in translation
default_translation = _fetch(settings.LANGUAGE_CODE)
File "/usr/local/lib/python2.7/dist-packages/Django/utils/translation/trans_real.py", line 189, in _fetch
"The translation infrastructure cannot be initialized before the "
AppRegistryNotReady: The translation infrastructure cannot be initialized before the apps registry is ready. Check that you don't make non-lazy gettext calls at import time.
@hellsgateソリューションは私のために働いた。
具体的には @ hellsgateによって参照されるリンク から、私は変更しました:
module = Django.core.handlers.wsgi:WSGIHandler()
に
module = Django.core.wsgi:get_wsgi_application()
私のvassals.iniファイル
これはあまり賢くない人(私など)への回答です:明らかなことを確認してください:エラーメッセージは次のとおりです:... Check that you don't make non-lazy gettext calls at import time.
したがって、モデルフィールドのverbose_nameまたはその他の部分でDjangoの翻訳を使用する場合インポート時に評価されるため、*_lazy
バージョンを使用する必要があります。そうでない場合は、OPで発生したエラーが発生します。
私は基本的に:
from Django.db import models
from Django.utils.translation import gettext as _
import datetime
# other things
class myModle(models.Model):
date = models.DateField(_('Date'), default=datetime.date.today)
# other defs. and things
OPと同じエラーが発生しましたが、私のwsgi設定は問題ありませんでした。
私がしなければならなかったのは、gettext
をgettext_lazy
(またはugettext
をugettext_lazy
)に置き換えることだけで、すべて問題ありませんでした。
これは、誤って報告されたバグ https://code.djangoproject.com/ticket/23146 と同じようです。
私もこれに遭遇し、そのリンクで提案された修正がうまくいきました。更新はwsgi.py
ファイルで行う必要があります。変更方法がわからない場合は、「wsgi.py」を投稿してください。
アプリケーションへのパスの設定が不足している可能性があります。これを私のwsgiファイルで確認してください。より正確なドキュメント herehttps://joshcarllewis.com/articles/getting-started-with-Django が見つかります。それがあなたの問題を解決することを願っています。
import os, sys
sys.path.append('D:/Django/mysite')
os.environ['Django_SETTINGS_MODULE'] = 'mysite.settings'
from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()
その例外の別の考えられる原因を次に示します。name
クラスのAppConfig
の翻訳を誤ってapps.py
ファイルに追加しました:
class BookConfig(AppConfig):
name = _('Book')
verbose_name = _('Book')
見当違いの翻訳を削除した後、すべてが完全に機能し始めました:
class BookConfig(AppConfig):
name = 'Book'
verbose_name = _('Book')
インストールした「Django」のバージョンを確認できます。
$python -c 'import Django; print (Django.get_version ())'
そのバージョンがプロジェクト「requeriments.txt」を使用していることを確認してください。同じバージョンでない場合は、「Django」をアンインストールし、「requeriments.txt」に設定されているバージョンをインストールする必要があります。
「仮想環境」を使用している場合、間違った「仮想環境」を立てて、Djangoの新しいバージョンをインストールした可能性があります。例えば:
"requeriments.txt"にDjango == 1.6.1と入力します
$python -c 'import Django; print(Django.get_version())'
1.7.4
$Sudo pip uninstall Django
$Sudo pip install Django==1.6.1
@hellsgateおよび@shawnと同じ答え。交換しなければならなかった
import Django.core.handlers.wsgi
application = Django.core.handlers.wsgi.WSGIHandler()
沿って
from Django.core.wsgi import get_wsgi_application
application = get_wsgi_application()