2013-02-04 2 views
1

저는 django-1.4.3을 사용하고 있습니다. 수퍼 유저는 사용자를 생성하고 비밀번호를 할당 할 수 있습니다. 여기서는 사용자가 사용자 이름으로 이메일을 사용하여 로그인 할 수 있도록 django-email-as-username을 사용하고 있습니다. 수퍼 유저가 새 사용자를 추가하면 새로 추가 된 사용자에게 사용자 이름과 비밀번호를 이메일로 알려야합니다.Django admin - 사용자 생성시 사용자 이름과 비밀번호를 이메일로 보내십시오.

post_save signal을 사용하여 사용자 생성 후 이메일을 보낼 수 있습니다. 그러나 암호화되고 저장 될 때 암호를 얻을 수 없습니다. 원시 비밀번호 인 이메일을 이메일로 보내려고합니다. 이것을 어떻게 할 수 있습니까?

답변

1

나는 아래의 코드를 사용하여 달성 :

from django.db.models.signals import post_save 
from django.contrib.auth.models import User 
from django.dispatch import receiver 

@receiver(post_save, sender = User) 
def my_callback(sender, **kwargs): 
    import inspect 
    records =[] 
    for frame_record in inspect.stack(): 
     records.append(frame_record[3]) 
     if frame_record[3]=='get_response': 
      request = frame_record[0].f_locals['request'] 
      email = request.POST.get('email') 
      password1 = request.POST.get('password1') 
      password2 = request.POST.get('password2') 
      if email != None and password1 != None and password2 != None and password1 == password2: 
       html_content ="Hi,<br> Your username: %s <br> Password: %s" 
       from_email = settings.DEFAULT_FROM_EMAIL 
       message  = EmailMessage('Welcome', html_content %(email, password1), from_email, [email]) 
       message.content_subtype = "html" # Main content is now text/html 
       message.send() 
      break 
+0

덕분에 당신이 나에게 도움이 많이 있지만 특별히 inspect.stack, 당신 메도 조금 설명해주십시오 것 – Armance

관련 문제