django2用iframe标签完成网页内嵌播放b站视频功能


Posted in Python onJune 20, 2018

前言:

给自己的网站中加入视频资源,有两种方法,一种是用iframe标签引用外站资源,另一种则使用video标签,获取站内资源进行视频播放。其中前者顾名思义,是将视频资源上传到视频网站中,然后通过引用的方式在站内播放视频,这种方法适用于视频资源内容公开免费,且不想花钱购买七牛云空间的开发者,毕竟是免费的嘛!而后者,则是需要有云空间存放视频资源才可以,不过后者的好处是,可以用于视频付费内容的开发。

今天恰好遇到了给自己要开发的项目,加一段视频新闻公告的需求!既然是新闻公告内容,当然是不需要加密的了。所以,也就没有必要花钱搞个云空间了。果断选择第一种,使用iframe标签的方式来实现网页内嵌播放视频方式来开发!

1.选择视频网站进行视频引用:

1.爱奇艺的视频加广告加得简直丧心病狂,像老太太的裹脚布又臭又长,垃圾,不用!

2.腾讯视频的视频也加广告,虽然广告没有那么长,但是很阴险的是,如果视频超过十几分钟,就会无法在引用视频的网站播放,被强制要求转去腾讯视频才可以看,简直狼子野心,垃圾中的垃圾,不用!

3.bilibili,也就是传说中的b站,不但视频没有广告(引导型广告还是有的,但是不影响观看,不是那种不看完广告不让看视频的霸王硬广),没有玩儿阴的强制跳转去他家网站,还高清无码有弹幕,选b站!

2.实际操作:

1.在template目录下的index.html中加入跟视频引用相关的代码:

<!--视频 S-->
<div class="videoCon">
  <div class="name" style="color: orangered">新闻公告</div>
  <div class="videoF">
<!--这里填入从b站随机挑选一个视频,然后获取的引用代码-->
    <iframe src="//player.bilibili.com/player.html?aid=24841101&cid=41877807&page=1" 
scrolling="no" border="0" frameborder="no" framespacing="0" allowfullscreen="true"> 
</iframe>
<!---->
  </div>
</div>
<!--视频 E-->

2.获取b站的视频引用相关代码(随机挑选一个b站视频,进入视频播放页)

django2用iframe标签完成网页内嵌播放b站视频功能

3.django网页中的效果图

django2用iframe标签完成网页内嵌播放b站视频功能

3.跟django后端结合,动态的嵌入不同视频

1.在models.py中(一般嵌入代码长度不会超过300,在150——300之间)

class Bili(models.Model):
  '''新闻相关视频'''
  new=models.ForeignKey(News,verbose_name='新闻公告',on_delete=models.CASCADE)
  is_topline=models.BooleanField(default=False,verbose_name='是否是头条')
  bili=models.CharField(verbose_name='视频嵌入代码',max_length=300)
  add_time = models.DateTimeField(default=datetime.now, verbose_name='添加时间')

  class Meta:
    verbose_name = '新闻相关视频'
    verbose_name_plural = verbose_name

  def __str__(self):
    return self.new.title

打开Terminal终端,执行数据更新命令:

python manage.py makemigrations
python manage.py migrate

2.在adminx.py中注册

import xadmin
from .models import News,Bili
class NewsAdmin(object):
  list_display = ['title', 'img','click_num','add_time']
  search_fields = ['title', 'img','click_num',]
  list_filter = ['title', 'img','click_num','add_time']
  style_fields={'context':'ueditor'}

#注册代码
class BiliAdmin(object):
  list_display = ['new', 'is_topline']
  search_fields = ['new', 'is_topline']
  list_filter =['new', 'is_topline']

xadmin.site.register(News, NewsAdmin)
#注册代码
xadmin.site.register(Bili, BiliAdmin)

3.可以在xadmin后台进行多个视频嵌入代码的填入

随机在b站找的三个视频的嵌入代码:

<iframe src="//player.bilibili.com/player.html?aid=24687507&cid=41510047&page=1" scrolling="no" 
border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<iframe src="//player.bilibili.com/player.html?aid=22025564&cid=36402353&page=1" scrolling="no" 
border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>
<iframe src="//player.bilibili.com/player.html?aid=17766502&cid=29007139&page=1" scrolling="no" 
border="0" frameborder="no" framespacing="0" allowfullscreen="true"> </iframe>

django2用iframe标签完成网页内嵌播放b站视频功能

django2用iframe标签完成网页内嵌播放b站视频功能

4.在views.py中:

from .models import News,Bili

class NewView(View):
  """新闻公告详情"""
  def get(self,request,new_id):
    new=News.objects.filter(id=new_id).first()
    new.click_num+=1

    # 根据新闻公告的不同,显示与之关联的视频
    bili=Bili.objects.filter(new=new).last()

    new.save()
    return render(request,'news-base.html',{'new':new,'bili':bili})


class IndexView(View):
  """首页"""
  def get(self,request):
    all_news=News.objects.all().order_by('-add_time')

    p = Paginator(all_news, 20)
    page = request.GET.get('page', 1)
    try:
      news = p.page(int(page))
    except PageNotAnInteger:
      news = p.page(1)
      
    #首页播放被标记为头条的最后一部视频
    bili=Bili.objects.filter(is_topline=True).last()

    return render(request,'index.html',{'news':news,'bili':bili})

5.改写Template目录下的index.html(首页)和new-base.html(新闻模板页)

index.html

<!--视频 S-->
<div class="videoCon">
  <div class="name" style="color: orangered">新闻公告</div>
  <div class="videoF">
    {{ bili.bili|safe }}
  </div>
</div>
<!--视频 E-->

new-base.html

<!--视频 S-->
<div class="videoCon">
  <div class="name" style="color: orangered">{{ new.title }}</div>
  <div class="videoF">
    {{ bili.bili|safe }}
  </div>
</div>
<!--视频 E-->

6.效果图

新闻详情页

django2用iframe标签完成网页内嵌播放b站视频功能

首页

django2用iframe标签完成网页内嵌播放b站视频功能

4.总结

这个功能其实还是挺简单的,技术上没有什么可总结的,只不过我在随机在b站找几个视频,发现基本上所有的视频内容吧,都挺令人担忧的,b站作为体现年轻人喜好的一个网站,其中内容全都是以低俗,谄媚,秀下限,恶趣味,宅腐文化为主旋律的,作为一个90后,不禁叹息,00后真是垮掉的一代啊啊啊啊……现在的年轻人,女生(有些甚至是男扮女装)穿裙子的标准长度,居然是以一扭屁股就能露出安全裤为标准的长度!对于未成年的小男生来说,根本不存在戒撸的可能性了啊!什么叫心理下流看什么都下流?天天靠露安全裤博眼球,自己出于什么心理真的没个数么?当然,从宏观上看,因为三十年前那一拨国策,搞得现在女少男多,按照市场规律:在绝对刚需的情况下,物以稀为贵! 现在社会整体上,女性的权利空前的大,这是无法改变的。既然无法改变,不妨转变一个角度看问题,适龄女性比适龄男性少,当今女性的裙子又比过去女性的裙子短,显然卫生纸的市场需求量,势必越来越大,而卫生纸的上游行业(木材,芦苇等造纸原材料的行业),及同类行业(软装、纸箱、办公用纸等与卫生纸消耗同样原料的行业)价值必将一路上扬!如果有搞期货或者炒股票的兄弟觉得有道理,入手一些这种行业的证券,肯定稳赚啊!

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
从零学python系列之教你如何根据图片生成字符画
May 23 Python
python在windows和linux下获得本机本地ip地址方法小结
Mar 20 Python
Python处理中文标点符号大集合
May 14 Python
关于Pycharm无法debug问题的总结
Jan 19 Python
Python OpenCV 使用滑动条来调整函数参数的方法
Jul 08 Python
详解python实现数据归一化处理的方式:(0,1)标准化
Jul 17 Python
在 Jupyter 中重新导入特定的 Python 文件(场景分析)
Oct 27 Python
Python enumerate函数遍历数据对象组合过程解析
Dec 11 Python
浅析Python数字类型和字符串类型的内置方法
Dec 22 Python
Pandas实现DataFrame按行求百分数(比例数)
Dec 27 Python
如何使用python代码操作git代码
Feb 29 Python
基于Python采集爬取微信公众号历史数据
Nov 27 Python
python基于http下载视频或音频
Jun 20 #Python
python实现下载pop3邮件保存到本地
Jun 19 #Python
python+POP3实现批量下载邮件附件
Jun 19 #Python
python实现批量解析邮件并下载附件
Jun 19 #Python
Python3使用SMTP发送带附件邮件
Jun 16 #Python
Python3使用turtle绘制超立方体图形示例
Jun 19 #Python
python3使用SMTP发送HTML格式邮件
Jun 19 #Python
You might like
基于mysql的论坛(2)
2006/10/09 PHP
GBK的页面输出JSON格式的php函数
2010/02/16 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
php利用事务处理转账问题
2015/04/22 PHP
PHP的Yii框架中使用数据库的配置和SQL操作实例教程
2016/03/17 PHP
PHP正则+Snoopy抓取框架实现的抓取淘宝店信誉功能实例
2017/05/17 PHP
JavaScript 动态添加表格行 使用模板、标记
2009/10/24 Javascript
js根据日期判断星座的示例代码
2014/01/23 Javascript
JS根据变量保存方法名并执行方法示例
2014/04/04 Javascript
javaScript 逻辑运算符使用技巧整理
2017/05/03 Javascript
Vue实现web分页组件详解
2017/11/28 Javascript
vue中的模态对话框组件实现过程
2018/05/01 Javascript
jQuery实现列表的增加和删除功能
2018/06/14 jQuery
在小程序中使用canvas的方法示例
2018/09/17 Javascript
详解处理Vue单页面应用SEO的另一种思路
2018/11/09 Javascript
小程序实现图片移动缩放效果
2020/05/26 Javascript
[01:06]DOTA2小知识课堂 Ep.01 TP出门不要忘记帮队友灌瓶哦
2019/12/05 DOTA
python脚本实现查找webshell的方法
2014/07/31 Python
浅要分析Python程序与C程序的结合使用
2015/04/07 Python
Python中的filter()函数的用法
2015/04/27 Python
Python 打印中文字符的三种方法
2018/08/14 Python
python3实现爬取淘宝美食代码分享
2018/09/23 Python
浅谈Pandas Series 和 Numpy array中的相同点
2019/06/28 Python
python图形用户接口实例详解
2019/12/16 Python
利用PyCharm操作Github(仓库新建、更新,代码回滚)
2019/12/18 Python
解决Keras中循环使用K.ctc_decode内存不释放的问题
2020/06/29 Python
Python通过zookeeper实现分布式服务代码解析
2020/07/22 Python
联想加拿大官方网站:Lenovo Canada
2018/04/05 全球购物
美国婴儿和儿童服装购物网站:PatPat
2020/10/01 全球购物
JAVA程序设计笔试题面试题一套
2015/07/28 面试题
西安交大自主招生自荐信
2014/01/27 职场文书
房产委托公证书样本
2014/04/04 职场文书
2014年最新离婚协议书范本
2014/10/11 职场文书
党建工作汇报材料
2014/12/24 职场文书
《追风筝的人》:人心中的成见是座大山,但请不忘初心
2019/11/15 职场文书
在CSS中映射鼠标位置并实现通过鼠标移动控制页面元素效果(实例代码)
2021/04/22 HTML / CSS