基于django的视频点播网站开发-step12-后台订阅功能...

news/2024/5/21 6:03:01/文章来源:https://blog.csdn.net/weixin_34235371/article/details/89535111

本讲我们会讲到一些关于发邮件的技术。我们知道,订阅功能是一个很常见的功能,当用户订阅某个网站后,网站会通过后台给用户发送网站最新的一些动向,一般是通过邮件来发送的。当你阅读完本节内容,会对发邮件的流程有一个大概的了解。

配置相关参数

发送邮件是需要配置相关参数的,且每个邮件服务商都有自己的配置值,笔者使用的是163邮箱,在settings.py追加如下配置

EMAIL_BACKEND = 'django.core.mail.backends.smtp.EmailBackend'# 邮件配置
EMAIL_USE_SSL = True
EMAIL_HOST = 'smtp.163.com'
EMAIL_PORT = 465
EMAIL_HOST_USER = 'net936@163.com'
EMAIL_HOST_PASSWORD = 'your pwd'

一定要记得配置 EMAIL_BACKEND ,因为django默认配置的是一种模拟发邮件的 BackEnd ,并不能使用,故要替换。

实现发邮件

我们先来写订阅推送的路由,

path('subscribe/', views.SubscribeView.as_view(), name='subscribe'),

将路由设置为 SubscribeView

我们先贴出 SubscribeView 的代码

class SubscribeView(SuperUserRequiredMixin, generic.View):def get(self, request):video_list = Video.objects.get_published_list()return render(request, "myadmin/subscribe.html" ,{'video_list':video_list})def post(self, request): video_id = request.POST['video_id']video = Video.objects.get(id=video_id)subject = video.titlecontext = {'video': video,'site_url':settings.SITE_URL}html_message = render_to_string('myadmin/mail_template.html', context)email_list = User.objects.filter(subscribe=True).values_list('email',flat=True)# 分组email_list = [email_list[i:i + 2] for i in range(0, len(email_list), 2)]if email_list:for to_list in email_list:try:send_html_email(subject, html_message, to_list)except smtplib.SMTPException as e:logger.error(e)return JsonResponse({"code": 1, "msg": "发送失败"})return JsonResponse({"code": 0, "msg": "success"})else:return JsonResponse({"code": 1, "msg": "邮件列表为空"})

这是一个普通的视图类,功能是由get和post共同来完成的。get中设置了要显示的模板文件myadmin/subscribe.html,它是下面的样子

当我们要给用户发送邮件的时候,需要先选择要推送的视频。然后点击通知订阅用户,即可触发ajax发送代码,ajax代码位于static/js/myadmin/send_mail.js,里面最终调用的是SubscribeView中的post方法,中post方法中,我们先通过主键获取到视频的当前实例,并且还获取到所有订阅用户的email地址放到email_list中,最后调用send_html_email将邮件发送出去,send_html_email封装在helpers.py,它的具体代码是

def send_html_email(subject, html_message, to_list):plain_message = strip_tags(html_message)from_email = settings.EMAIL_HOST_USERsend_mail(subject, plain_message, from_email, to_list, html_message=html_message)def send_email(subject, content, to_list):try:message = (subject, content, settings.EMAIL_HOST_USER, to_list)send_mass_mail((message,))except smtplib.SMTPException :print("--> send fail")return HttpResponse("fail")else:print("--> send success")return HttpResponse("success")

从代码可以看出,程序最终调用的是django自带的 send_mass_mail 函数,该函数封装了发送邮件的细节。当然还可以使用 send_mail 函数,send_mail每次发邮件都会建立一个连接,发多封邮件时建立多个连接。而 send_mass_mail 是建立单个连接发送多封邮件,所以一次性发送多封邮件时 send_mass_mail 要优于 send_mail。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.luyixian.cn/news_show_712458.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

python 爬网站 实例_python爬虫实战:之爬取京东商城实例教程!(含源代码)

前言:本文主要介绍的是利用python爬取京东商城的方法,文中介绍的非常详细,下面话不多说了,来看看详细的介绍吧。主要工具scrapyBeautifulSouprequests分析步骤1、打开京东首页,输入裤子将会看到页面跳转到了这里&#…

jango web开发指南_Web前端“月薪过万”必读的一些入门书籍和网站!

互联网的快速发展和激烈竞争,使得用户体验成为一个重要的关注点,导致专业Web前端工程师成为热门职业。各大公司对Web前端工程师的需求量都很大,要求也越来越高,优秀的Web前端工程师更是稀缺。因此想要学习Web前端技术的人越来越多…

大型网站技术架构(六)网站的伸缩性架构

2019独角兽企业重金招聘Python工程师标准>>> 网站系统的伸缩性架构最重要的技术手段就是使用服务器集群功能,通过不断地向集群中添加服务器来增强整个集群的处理能力。“伸”即网站的规模和服务器的规模总是在不断扩大。 1、网站架构的伸缩性设计 网站的…

大型网站技术架构(七)网站的可扩展性架构

2019独角兽企业重金招聘Python工程师标准>>> 扩展性是指对现有系统影响最小的情况下,系统功能可持续扩展或提升的能力。 设计网站可扩展架构的核心思想是模块化,并在此基础上,降低模块间的耦合性,提供模块的复用性。模…

趣谈个人建站

2000年前后是第一波互联网浪潮,无论是幸与不幸,我的早期职业生涯都是从这波浪潮开始的,那时候很多ASP(Application Service Provider)厂商会给个人用户免费提供一些静态建站功能,大家可以写一些HTMLCSSJS的…

python实现新闻网站_Python 教你 4 行代码开发新闻网站通用爬虫

​ GNE(GeneralNewsExtractor)是一个通用新闻网站正文抽取模块,输入一篇新闻网页的 HTML, 输出正文内容、标题、作者、发布时间、正文中的图片地址和正文所在的标签源代码。GNE在提取今日头条、网易新闻、游民星空、 观察者网、凤…

wordpress 后台慢_WordPress网站优化加速的5个技巧

想让自己的wordpress网站访问速度更快,通过下面几个技巧,可轻松提速:常规的前端性能优化无论你的网站是基于什么后台技术实现的,被访问者访问的时候,总是会生成常规的 HTML、CSS、JavaScript 等文件发送回客户端。要想…

c# selenium chrome 文件下载_使用selenium从网站下载文件

from selenium import webdriverfrom time import sleepimport datetimeimport osimport shutilimport datetime#获取当前时间并参数化now_time datetime.datetime.now()chage_time (now_time datetime.timedelta(days-1)).strftime(%Y-%m-%d)#删除前一天的数据shutil.move(…

wpf mvvm框架_[Windows] 在 Microsoft Docs 网站中挖掘 MVVM 的各种学习资源

最近写了一些 MVVM 框架的文章,翻了一些 Microsoft Docs 的文档,顺便就对 MVVM 本身来了兴致,想看看更多当年相关的文档。在 MVVM 出现后十多年,我在不同的场合见到过多种 MVVM 的实现方式,也看到过各种 MVVM 框架的多…

排名怎么查_常见客户SEO问题解答:网站降权了应该怎么处理?

什么是降权?网站降权到底怎么查?网站降权的典型特征Site首页不在第一位;(网站正常也有可能)多个关键词排名骤降;(单个词或排名有升有降属正常)Site网站收录量大幅度下降;…

nas服务器改成网站,nas配置web服务器

nas配置web服务器 内容精选换一换华为云帮助中心,为用户提供产品简介、价格说明、购买指南、用户指南、API参考、最佳实践、常见问题、视频帮助等技术文档,帮助您快速上手使用华为云服务。云耀云服务器(Halo Elastic Cloud Server,HECS)是可以…

echarts grid的样式位置_CSS Grid 系列(下)-使用Grid布局构建网站首页

by Chris House译者:若愚老师更好的阅读体验?可在 饥人谷技术博客 查看原文要看懂这篇文章,推荐先简单过一遍姊妹篇 CSS Grid 系列(上)-Grid布局完整指南当我开始一个项目,并开始计划如何布局主页时,我的大脑复现出浮动…

实用网站 |懒人爱学习

实用网站Java成神之路 在线阅读地址 GitHub Pages 完整阅读:进入 Gitee Pages 完整阅读: 进入(国内访问速度较快)> 快搜 快搜 (快人一步):进入 一个牛逼的技术导航网 地址:http://www.jishu5.com/ 截图 超级目录 地址…

python+flask搭建CNN在线识别手写中文网站

向AI转型的程序员都关注了这个号👇👇👇大数据挖掘DT机器学习 公众号: datayx使用pythonflask搭建的一个网站,然后从网页的写字板上获取鼠标手写的汉字经过转码后传回后台,并经过图片裁剪处理之后传入CNN手…

爬取常用的网站,整理成API:中国联通,大众点评,IT桔子,拉勾网,猫眼电影,人人贷......

向AI转型的程序员都关注了这个号👇👇👇机器学习AI算法工程 公众号: datayx完整源码下载地址:关注微信公众号 datayx 然后回复 爬虫 即可获取。阅读过本文的人还看了以下:不断更新资源深度学习、机器学习、…

网站流量预测任务第一名解决方案:从GRU模型到代码详解时序预测

向AI转型的程序员都关注了这个号👇👇👇人工智能大数据与深度学习 公众号:datayx下面我们将简要介绍如何修正 GRU 以完成网站流量时序预测。代码获取方式关注微信公众号 datayx 然后回复 流量预测 即可获取。AI项目体验地址 htt…

phpstudy快速搭建网站_小白快速上手搭建属于自己的网站

小白入门建站其实可以完全不需要代码方面的知识也可以建站。 想要在学习初期就拥有一个属于自己的网站,学习~装逼么? 步骤很简单:一、域名选择:选购一个自己喜欢的域名,建议可以到阿里云或者腾讯云购买(域名…

vue企业门户网站模板_门户网站建设费用需要多少钱?

现在互联网发展的速度越来越快了,前几年还是2g时代,现在已经变成5g了,各方面的技术也变得越来越成熟了,南宁网站建设也不例外,越来越多的南宁企业想建设门户网站,而价格是广大用户最关心的问题,…

有效ip地址_计算机等级考试详解:用IP地址及域名访问web网站的正确说法

计算机等级考试详解:用IP地址及域名访问web网站的正确说法!本经验由宗龙龙原创,全文共1000多字,阅读需要14分钟,如果文中存在错误,还请大家多多指点,我会积极改进的!11、以下关于访问Web站点的说…

爬取网易,搜狐,凤凰和澎湃网站评论数据,正负面情感分析

向AI转型的程序员都关注了这个号????????????机器学习AI算法工程 公众号:datayxScrapy爬虫项目基于Scrapy框架的Python新闻爬虫,能够爬取网易,搜狐,凤凰和澎湃网站上的新闻,将标题,内容&…