登録と放浪のためにdjango-registration-reduxを使用しています。セロリを追加することができます。サインアップ?Django-regristration-reduxでセロリを使用して登録時にメールを送ろう
おかげ
登録と放浪のためにdjango-registration-reduxを使用しています。セロリを追加することができます。サインアップ?Django-regristration-reduxでセロリを使用して登録時にメールを送ろう
おかげ
[OK]を誰もがこれを発見し、私は最初のアプリ などを作成することによって、それを行うために管理同じことを行う必要がある場合URL Overode "ジャンゴ・セロリ-REG"
はそうのように "/登録" します
url(r'^register/$', CeleryRegistrationView.as_view(), name='registration_register'),
その後で
(デフォルトのバックエンドDJ-REG-Reduxの内のビューにRegistrationViewを探してください) 'views.py'は、registration_profile変数をオーバーライドします。
class CeleryRegistrationView(RegistrationView):
registration_profile = CeleryRegistrationProfile
ここで、 'models.py'サブクラスのRegistrationProfileに次のものを追加します。セミコロンで必要とされる可能性の低い「要求」引数を削除し、シリアル化することはできません。サイトオブジェクトを文字列に変換します(現在はシリアライズ可能です)。
if send_email:
registration_profile.send_activation_email(site)
今
if send_email:
registration_profile.celery_send_activation_email(site)
原 'send_activation_email' メソッドの元のバルク
に(今、このコード、オーバーライドおよび変更 'create_inactive_user' メソッド上記新しいモデルマネージャでclass RegistrationProfile(RegistrationProfile):
objects = CeleryRegistrationManager()
def celery_send_activation_email(self, site):
site = site.__str__()
id=self.id
celery_task_send_activation_email.delay(id, site)
'celery_task_send_activation_email')が 'tasks.py'に入ります 'send_activation_email'を無効にして、 '@shared_task'デコレータを使用してください。 '要求'引数を削除し、必要でないときはメソッド全体で削除します。再びオブジェクトがシリアライズできないので、 'self'引数を 'id'に変更してください。 IDに登録オブジェクトとメソッド
`@shared_task
def celery_task_send_activation_email(id, site):
user = RegistrationProfile.objects.get(id=id)
activation_email_subject = getattr(settings,
'ACTIVATION_EMAIL_SUBJECT',
'registration/activation_email_subject.txt')
activation_email_body = getattr(settings, 'ACTIVATION_EMAIL_BODY',
'registration/activation_email.txt')
activation_email_html = getattr(settings, 'ACTIVATION_EMAIL_HTML',
'registration/activation_email.html')
ctx_dict = {
'user': user.id,
'activation_key': user.activation_key,
'expiration_days': settings.ACCOUNT_ACTIVATION_DAYS,
}
subject = (getattr(settings, 'REGISTRATION_EMAIL_SUBJECT_PREFIX', '') +
render_to_string(
activation_email_subject, ctx_dict))
# Email subject *must not* contain newlines
subject = ''.join(subject.splitlines())
from_email = get_from_email(site)
message_txt = render_to_string(activation_email_body,
ctx_dict)
email_message = EmailMultiAlternatives(subject, message_txt,
from_email, [user.user.email])
if getattr(settings, 'REGISTRATION_EMAIL_HTML', True):
try:
message_html = render_to_string(
activation_email_html, ctx_dict)
except TemplateDoesNotExist:
pass
else:
email_message.attach_alternative(message_html, 'text/html')
email_message.send()
全体の変化 'self.user' をつかみます