회원 가입 및 배회 목적으로 django-registration-redux를 사용하여 셀러리를 추가하여 사용자가 가입?Django-regristration-redux와 셀러리를 사용하여 가입시 이메일을 보내십시오.
감사
회원 가입 및 배회 목적으로 django-registration-redux를 사용하여 셀러리를 추가하여 사용자가 가입?Django-regristration-redux와 셀러리를 사용하여 가입시 이메일을 보내십시오.
감사
좋아, 사람이를 발견하고 처음 예를 들어, 응용 프로그램을 작성하여 내가 그것을 할 관리 동일 할 필요가있는 경우 URL을 Overode "장고 - 셀러리 - 등록"
은과 같이 "/ 등록"합니다 :
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'로 변경하십시오. 방법
`@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'로 등록 오브젝트를 잡아