我一直在试图将所有用户数据发送给他/她提供的电子邮件每当管理员创建通过Django的admin.I用户详细估计post_save信号应该用于这样的过程。但是我的post_save信号不能在控制台上调用,也不能在管理员创建完成后发送所有的用户信息。我做错了什么?发送用户的细节他的电子邮件时Django管理创建用户
Models.py
from __future__ import unicode_literals
from django.contrib.auth.models import User
from django.db.models.signals import post_save
from django.core.mail import EmailMessage
from django.dispatch import receiver
from django.db import models
@receiver(post_save,sender=User)
def send_user_data_when_created_by_admin(sender, **kwargs):
import inspect
records = []
for record in inspect.stack():
print('record',record)
records.append(record[3])
if record[3]=='get_response':
request = record[0].f_locals['request']
first_name = request.POST.get('first_name')
print('first name is',first_name)
last_name = request.POST.get('last_name')
address = request.POST.get('address')
email = request.POST.get('email')
html_content = "your first name:%s <br> last name:%s <br> address:%s"
from_email = settings.DEFAULT_FROM_EMAIL
message=EmailMessage('welcome',html_content %(first_name,last_name,address),from_email,[email])
message.content_subtype='html'
message.send()
class userbase(models.Model):
first_name = models.CharField(max_length=100,blank=True,null=True,help_text=("enter the first name of user"))
last_name = models.CharField(max_length=100,blank=True,null=True,help_text=("enter the last name"))
address = models.CharField(max_length=300,blank=True,null=True,help_text=("enter the address"))
contact = models.CharField(max_length=100,blank=True,null=True,help_text=("enter the contact"))
email = models.EmailField(max_length=100,blank=True,null=True,help_text=("enter the email"))
username = models.CharField(max_length=100,blank=True,null=True,help_text=("enter the username"))
password = models.CharField(max_length=100,blank=True,null=True,help_text=("enter the strong password"))
def __str__(self):
return (self.username)
您应该在设置文件中将'EMAIL_BACKEND ='django.core.mail.backends.smtp.EmailBackend''更改为'EMAIL_BACKEND ='django.core.mail.backends.console.EmailBackend''以查看发送的电子邮件如果信号全部被调用 – phourxx
我没有得到控制台中的名字,因为我已经打印它看看是否它的工作与否。我的代码中可能有什么错误? – milan