在 comment/views.py 中 update_comment 方法中增加发送邮件通知的代码,首先要看是回复我的评论还是对博文进行评论,分辨方法就是看他有没有 Parent:reverse 用于将变量反向解析得出其链接;
然后再 blog/models.py 中使用 reverse 方法反向解析并返回对应的 blog_pk 值:
同样再 models.py 中增加一个 get_email 返回给视图函数
但是现在因为发送邮件需要等待一下,比较耗时,所以使用异步操作:
在 comment/models.py 中使用多线程,并增加 send_mail 方法来发送邮件
views.py 中修改 send_mail 方法,
新功能:
发送过来的邮件内容:样式比较难看
再 comment/models.py 中的 run 函数中增加 html_message 字段:
然后在 send_mail 方法中的 text 增加内容:
但是当我们的 html 比较复杂时,这里的 text 的内容就显得很乱了,可以调用模板来生成一个 html,在 comment/models.py 中增加:from django.template.loader import render_to_string:
在 comment 中创建一个 templates 文件夹,然后再在里面创建一个 comment 文件夹(和 user 中的 templates/user 原理一样):然后再 comment/templates/comment 中创建一个 send_mail.html 文件:
在 comment/models.py 中使用 render_to_string 方法调用上面的 send_mail.html 模板:
但是这里使用 render_to_string 可能会在我们的评论上自动增加一个 p 标签(在发给我们的邮件中),这里没找见原因:怀疑可能和 qq 邮箱有关
最后部署到互联网的方法: