Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/20.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
Django send_mail()不';无法重新加载页面_Django_Email_Django Views - Fatal编程技术网

Django send_mail()不';无法重新加载页面

Django send_mail()不';无法重新加载页面,django,email,django-views,Django,Email,Django Views,我正在发现Django,我不明白为什么我的索引视图中的send_mail()函数有一次工作正常,但在我重新加载索引页时却不行 视图: 当我第一次加载页面时,一切正常,我收到一封邮件 然后我重新加载页面,没有收到第二封邮件。问题在于类定义中的send\u mail()调用的位置。Django通常会延迟加载对象,这意味着代码只有在首次使用时才会被导入。在您的情况下,当您第一次执行视图时,Django导入包含视图的模块,并在解析IndexView类时发送电子邮件。但是,在后续的页面视图中,代码已经加载

我正在发现Django,我不明白为什么我的索引视图中的send_mail()函数有一次工作正常,但在我重新加载索引页时却不行

视图:

当我第一次加载页面时,一切正常,我收到一封邮件


然后我重新加载页面,没有收到第二封邮件。

问题在于类定义中的
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)