2016-08-24 14 views
1

私はメールを送信していないdjangoアプリケーションで見ているバグを修正しようとしています。アプリケーションがうまくいきます、それは失敗しているメール機能だけです。エラーログを収集しようとしましたが、メールの送信に関連するエラーは発生しません。そこで、私はエラーを強制しようとする例を作りました。次に例を示します。DJANGO_SETTINGS_MODULE環境変数を設定するにはどうすればよいですか?

from django.core.mail import send_mail 

send_mail('hi', 'hi', '[email protected]', ['[email protected]'], fail_silently=False) 

私は上記のコードを実行すると、私は次のエラーを取得する:

Traceback (most recent call last): 
    File "dmail.py", line 14, in <module> 
    send_mail('hi', 'hi', '[email protected]', ['[email protected]'], fail_silently=False) 
    File "/data/servers/calendar_1/lib/python2.7/site-packages/django/core/mail/__init__.py", line 59, in send_mail 
    fail_silently=fail_silently) 
    File "/data/servers/calendar_1/lib/python2.7/site-packages/django/core/mail/__init__.py", line 29, in get_connection 
    path = backend or settings.EMAIL_BACKEND 
    File "/data/servers/calendar_1/lib/python2.7/site-packages/django/utils/functional.py", line 184, in inner 
    self._setup() 
    File "/data/servers/calendar_1/lib/python2.7/site-packages/django/conf/__init__.py", line 39, in _setup 
    raise ImportError("Settings cannot be imported, because environment variable %s is undefined." % ENVIRONMENT_VARIABLE) 
ImportError: Settings cannot be imported, because environment variable DJANGO_SETTINGS_MODULE is undefined. 

私はこれにコードを変更することにより、私のテストの例を修正するために管理:

from django.core.mail import send_mail 

from django.conf import settings 
settings.configure(TEMPLATE_DIRS=('/path_to_project',), DEBUG=False, TEMPLATE_DEBUG=False) 

send_mail('hi', 'hi', '[email protected]', ['[email protected]'], fail_silently=False) 

しかし、これらの設定をsend_mail.pyに追加しようとすると、実際のアプリケーションからメールが届かないままです。私の例と私のアプリケーションの両方で見ることができるようにDJANGO_SETTINGS_MODULEをどのようにセットアップするのか、誰かが私に説明してくれますか?それに失敗すると、誰かが私が実際にログにメール関連のエラーが表示されるように、意味のあるログをdjangoで設定する方法を教えてもらえますか?あらゆるヒントやガイダンスは高く評価されます。

答えて

0

MacまたはLinuxにはありますか?次に簡単にexport DJANGO_SETTINGS_MODULE="project_name.settings.your_settings_file" 設定ファイルがフォルダ内にある場合は、そこに__init__.pyファイルもあることを確認してください。

ウィンドウズでは、私は相当物がSET DJANGO_SETTINGS_MODULE="project_name.settings.your_settings_fileだと信じていますが、間違いかもしれません。ジャンゴロギング用

https://docs.djangoproject.com/en/1.10/topics/logging/

+0

私はCentOSの/ Linux上でです。私のアプリケーションはoatsと呼ばれ、設定ファイルはsettings.pyと呼ばれます。だから...私はしようとしました: export DJANGO_SETTINGS_MODULE = "oats.settings" しかしそれは効果がありませんでした。テストアプリケーションはそれを取得しません。 – Matthew

+0

最初のコードブロックで、Pythonインタプリタまたはdjangoシェルから実行していますか?シェルの場合、設定ファイルにTEMPLATE_DIRS =( '/ path_to_project'、)、DEBUG = False、TEMPLATE_DEBUG = Falseが設定されていることを確認し、--settings = oats.settingsオプションを付けてシェルを呼び出します。サーバーを実行するときは、同じ--settingsオプションを使用してください。 – perfect5th

+0

私はシェルではなくインタプリタを使用しています。私はロギングとロギングをセットアップしようとしましたが、メールに関係するものは何も出ていません。非常にイライラ。 – Matthew

2

は、アプリケーションの外部からそれを設定しないでください参照してください。 wsgiファイルにDJANGO_SETTINGS_MODULE変数のエントリを作成します。サーバーが起動するたびに、この変数が自動的に設定されます。例えば

import os 
os.environ['DJANGO_SETTINGS_MODULE'] = '<project_name>.settings' 
+0

確かに、それは素晴らしいように聞こえる。例がありますか?答え – Matthew

+0

(エントリの)私は私のWSGIファイルをチェックし、それがすでに持っている: os.environ.setdefault(「DJANGO_SETTINGS_MODULEを」、「oats.settings」) 私はには、SetDefaultずに頑張ります。 –

+0

を更新 – Matthew

関連する問題