1

django-notification を使用してメールを送信しようとしています。ドキュメントに従って、すべての通知タイプ、テンプレート、および management.py を作成しました。ただし、電子メールを送信しようとすると、次のエラーが表示されたデバッグ ページが表示されます: NoticeType 一致するクエリが存在しません。コードの一部を次に示します。

私のmanagement.pyファイルでは:

from django.conf import settings
from django.db.models import signals
from django.utils.translation import ugettext_noop as _

if "notification" in settings.INSTALLED_APPS:
    from notification import models as notification

    def create_notice_types(app, created_models, verbosity, **kwargs):
        notification.NoticeType.create("create_model", _("Model Creation"), _("An entry has been created"))
        notification.NoticeType.create("delete_model", _("Model Deletion"), _("An entry has been deleted"))
        notification.NoticeType.create("edit_model", _("Model Change"), _("An entry has been changed."))
    signals.post_syncdb.connect(create_notice_types, sender=notification)
else:
    print "Skipping creation of NoticeTypes as notification app not found"

私のsettings.pyファイルでは:

INSTALLED_APPS = (
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.sites',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'django.contrib.admin',
    'departments',
    'notification'
)

EMAIL_USE_TLS = True
EMAIL_HOST = 'smtp.gmail.com'
EMAIL_HOST_USER = 'texturamail@gmail.com'
EMAIL_HOST_PASSWORD = #not shown
EMAIL_PORT = 587
NOTIFICATION_BACKENDS = [("texturamail@gmail.com", "notification.backends.email.EmailBackend"),]
#other code....

私のmodels.pyファイルでは:

def model_create_edit(sender, **kwargs):
      instance = kwargs.get('instance')
      user, first_name, last_name = instance.user, instance.user.first_name, instance.user.last_name
      if kwargs['created']:
            notification.send([user], "create_email", {'user':user, 'first':first_name, 'last':last_name})

      else:
            notification.send([user], "edit_email", {'user':user, 'first':first_name, last':last_name})           

def model_deletion(sender, **kwargs):
      instance = kwargs.get('instance')
      user, first_name, last_name = instance.user, instance.user.first_name, instance.user.last_name
      notification.send([user], "delete_email", {'user':user, 'first':first_name, 'last':last_name})

コードでページをオーバーロードして申し訳ありません。そうは言っても、私が間違っていることはありますか?何か不足していますか?どんな洞察も大歓迎です!

4

2 に答える 2

0

これは、存在しないものをオブジェクトに割り当てようとしたために発生していNoticeTypeます。問題は、コードのどの部分がそれを行っているのかよくわかりませんが、 を追加try:するexcept:と問題が解決するということです。クエリを一致させて追加するときはいつでも試してみてください。見つけることができます。

于 2013-03-21T20:40:47.890 に答える
0

これはNoticeType、ラベルcreate_modeldelete_model、 で作成したために発生していますedit_model。ただし、通知を送信するnotifications.send場合は、別のラベルを使用していますcreate_email。ラベルは、最初に作成したものと同じでなければなりません。に変更create_mailする必要がありますcreate_model notification.send([user], "create_model", {'user':user, 'first':first_name, 'last':last_name})

于 2016-10-05T17:34:28.467 に答える