django:从管理面板向用户发送邮件
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了django:从管理面板向用户发送邮件相关的知识,希望对你有一定的参考价值。
我想知道如何配置django管理员以查看表单,因此auth_user应该向订阅用户发送电子邮件。
我做了什么:
models.朋友
from django.db import models
from datetime import datetime
class Mail(models.Model):
email=models.EmailField(max_length=255,unique=True,help_text="Το email του χρήστη",verbose_name="Email")
timestamp=models.DateTimeField(default=datetime.now,help_text="Η ημερομηνία που ο χρήστης γράφτηκε στην newsletter list",verbose_name="Ημερομηνία εγγραφής")
delete_link=models.SlugField(unique=True,max_length=255,null=True,blank=True)
def __unicode__(self):
return self.email
class Meta:
verbose_name = "Email User"
verbose_name_plural = "Email Users"
forms.朋友
from django import forms
class MailForm(forms.Form):
subject = forms.CharField(max_length=255)
message = forms.CharField(widget=forms.Textarea)
attachment = forms.FileField()
我想在管理页面中添加一个链接到新闻稿应用程序。例如:
现在不知何故,我必须为表单编写验证规则(主题和消息不能为空)。对于验证,我试图做类似的事情:
def clean_subject(self):
if self.cleaned_data["subject"]=="" or self.cleaned_data["subject"]==None:
raise forms.ValidationError("My text goes here")
return self.cleaned_data["subject"]
def clean_message(self):
if self.cleaned_data["message"]=="" or self.cleaned_data["message"]==None:
raise forms.ValidationError("My text goes here")
return self.cleaned_data["message"]
当表单无效时,django会显示标准方式的消息。例如:
最后,我必须写一个视图来显示表单(我正在尝试使用django管理员的标准,以及1个视图,其中显示“发送130封邮件成功”的消息。
任何建议如何配置django管理员做我所描述的将是有用的!
答案
我认为你应该创建一个Mail模型。首先,您必须创建一个邮件并保存。然后,您可以使用邮件模型的保存方法将其发送给所有电子邮件用户,也可以添加自定义管理操作来执行此操作。在我看来,保存方法是最好的。
所以你应该在models.py中有这个:
from django.db import models
from datetime import datetime
from django.core.mail import send_mail
class Mail(models.Model):
...
class Meta:
verbose_name = "Email User"
verbose_name_plural = "Email Users"
class MailText(models.Model):
subject = models.Charfield()
message = models.Charfield()
attachment = models.Filefield()
users = models.ManyToManyField(Mail)
send_it = models.BooleanField(default=False) #check it if you want to send your email
def save(self):
if self.send_it:
#First you create your list of users
user_list = []
for u in self.users:
user_list.append(u.email)
#Then you can send the message.
send_mail(str(self.subject),
str(self.message),
'from@example.com',
user_list,
fail_silently=False)
class Meta:
verbose_name = "Emails to send"
verbose_name_plural = "Emails to send"
以上是关于django:从管理面板向用户发送邮件的主要内容,如果未能解决你的问题,请参考以下文章
Symfony2、Sonata、UserBundle:当用户启用更新时发送电子邮件
Mezzanine 可以在用户注册时向管理员发送电子邮件吗?
使用 django 通过模板管理 pdf 并作为电子邮件附件发送