Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/335.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Django CustomUser在Admin中创建,用户通过电子邮件通知_Python_Django Forms - Fatal编程技术网

Python Django CustomUser在Admin中创建,用户通过电子邮件通知

Python Django CustomUser在Admin中创建,用户通过电子邮件通知,python,django-forms,Python,Django Forms,爱好开发人员,Python和Django新手 该项目将包括通过管理后端使用CustomUser(AbstractUser)模型创建新用户。在[Save]上,我想自动向新用户发送电子邮件[to:],并共享管理员创建新用户时提供的用户名和密码 我正在MacOS上使用Python3.7 Django 2.2。正在虚拟环境[Conda]中进行开发。在开发环境中将电子邮件服务器设置为后端文件类型。我在论坛上做了广泛的搜索[包括这一个]。。。尝试了我能找到的示例代码。我已经能够通过表单保存发送[然后在后端文

爱好开发人员,Python和Django新手

该项目将包括通过管理后端使用CustomUser(AbstractUser)模型创建新用户。在[Save]上,我想自动向新用户发送电子邮件[to:],并共享管理员创建新用户时提供的用户名和密码

我正在MacOS上使用Python3.7 Django 2.2。正在虚拟环境[Conda]中进行开发。在开发环境中将电子邮件服务器设置为后端文件类型。我在论坛上做了广泛的搜索[包括这一个]。。。尝试了我能找到的示例代码。我已经能够通过表单保存发送[然后在后端文件中接收]电子邮件,但不知道如何在电子邮件中包含表单变量

视图.py

从django.exe导入渲染
从django.core.mail导入发送邮件
def通知\邮件\发送(请求):
表单=CustomUserCreationForm(request.POST)
如果form.is_有效():
#设置邮件内容并发送邮件
通过
FORMS.py

来自django导入表单的

从django.contrib.auth.forms导入UserCreationForm、UserChangeForm
from.models导入CustomUser
类CustomUserCreationForm(UserCreationForm):
类元(UserCreationForm):
模型=自定义用户
字段=('username'、'owner\u fullname'、'email')
类CustomUserChangeForm(UserChangeForm):
类元(UserChangeForm):
模型=自定义用户
字段=('username'、'owner\u fullname'、'email')

您应该能够使用
表单访问表单数据。已清理的\u数据[字段\u名称]
,其中
字段\u名称将是
“用户名”


如果您使用Django模板构建电子邮件内容,请将表单对象作为上下文传递,并使用例如
{{form.cleaned_data.username}

当使用Django管理员时,您不需要编写自定义视图和表单

如果要更改管理员的行为,通常需要覆盖
ModelAdmin


在您的情况下,我建议重写

感谢我的开发伙伴的帮助。我深入研究了鲁平的建议,并成功地应用了“信号”:。只需添加“if created”即可解决此问题:在models.py中的post_save_receiver(sender,instance,created,**kwargs):函数中,Django允许您将信号分配给模型对象。当模型上出现某些条件时,这些命令将被执行。实际上,您正在利用django中的事件来执行某些操作@谢谢你。我现在在CustomUser的models.py中使用@receiver(post_save,sender=CustomUser),因此当用户创建或用户更改指令保存到model时,用户会发送和接收一封电子邮件[同一封!]。但是,我发现用户登录时也收到了相同的电子邮件[!],我假设用户登录时“某物”被保存到模型[?]。。。我想不同的“create”和“change”指令接收者应该受到定制表单的约束,可能是表单_valid()?目标是获得不同的电子邮件发送用户更改和用户创建,用户登录时没有。登录发生时,用户模型更新。有一个字段用于更新用户上次登录的时间。您可以查看该字段并将其与当前服务器时间进行比较,如果差值小于某个时间间隔,则不会触发您的电子邮件。@Rupin收到了!只需在
post\u save\u接收器(发送方,实例,已创建,**kwargs)中添加
(如果已创建):
函数(在models.py中)。请添加此问题的正确答案,并将其标记为已回答。