Django send_mail()不';无法重新加载页面
我正在发现Django,我不明白为什么我的索引视图中的send_mail()函数有一次工作正常,但在我重新加载索引页时却不行 视图: 当我第一次加载页面时,一切正常,我收到一封邮件Django send_mail()不';无法重新加载页面,django,email,django-views,Django,Email,Django Views,我正在发现Django,我不明白为什么我的索引视图中的send_mail()函数有一次工作正常,但在我重新加载索引页时却不行 视图: 当我第一次加载页面时,一切正常,我收到一封邮件 然后我重新加载页面,没有收到第二封邮件。问题在于类定义中的send\u mail()调用的位置。Django通常会延迟加载对象,这意味着代码只有在首次使用时才会被导入。在您的情况下,当您第一次执行视图时,Django导入包含视图的模块,并在解析IndexView类时发送电子邮件。但是,在后续的页面视图中,代码已经加载
然后我重新加载页面,没有收到第二封邮件。问题在于类定义中的
send\u mail()
调用的位置。Django通常会延迟加载对象,这意味着代码只有在首次使用时才会被导入。在您的情况下,当您第一次执行视图时,Django导入包含视图的模块,并在解析IndexView
类时发送电子邮件。但是,在后续的页面视图中,代码已经加载,类定义没有重新解析,因此永远不会进行send\u mail()
调用
您必须将send_mail()
调用移动到IndexView
类中的视图函数中
class IndexView(generic.ListView):
....
def get(self, request):
# Send email on every get request.
send_mail('Test Dj', 'Here is the message.', 'from@example.com', ['to@example'], fail_silently=False)
return super(IndexView, self).get(request)
只知道在浏览器中缓存并发送到“垃圾邮件”目录谢谢。最后,您能否解释super(IndexView,self).get(请求)而不是简单的“return request”?@user777466 super调用基类(generic.ListView)的
get
方法继续按照正常方式处理get请求。ie将继续处理列表视图的请求,并返回包含列表内容的HttpResponse。
class IndexView(generic.ListView):
....
def get(self, request):
# Send email on every get request.
send_mail('Test Dj', 'Here is the message.', 'from@example.com', ['to@example'], fail_silently=False)
return super(IndexView, self).get(request)