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常用列表数据结构小结
Aug 06 Python
Python和perl实现批量对目录下电子书文件重命名的代码分享
Nov 21 Python
在Python中封装GObject模块进行图形化程序编程的教程
Apr 14 Python
Python基于辗转相除法求解最大公约数的方法示例
Apr 04 Python
Python socket实现的简单通信功能示例
Aug 21 Python
Python实现的爬取百度文库功能示例
Feb 16 Python
numpy linalg模块的具体使用方法
May 26 Python
python修改FTP服务器上的文件名
Sep 11 Python
通过实例学习Python Excel操作
Jan 06 Python
Tensorflow实现部分参数梯度更新操作
Jan 23 Python
python实现俄罗斯方块游戏(改进版)
Mar 13 Python
Python 使用双重循环打印图形菱形操作
Aug 09 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
PHP个人网站架设连环讲(四)
2006/10/09 PHP
PHP初学入门
2006/11/19 PHP
某大型网络公司应聘时的笔试题目附答案
2008/03/27 PHP
Chrome Web App开发小结
2014/09/04 PHP
在网页中控制wmplayer播放器
2006/07/01 Javascript
Json对象替换字符串占位符实现代码
2010/11/17 Javascript
jsPDF生成pdf后在网页展示实例
2014/01/16 Javascript
php实例分享之实现显示网站运行时间
2014/05/20 Javascript
jquery滚动加载数据的方法
2015/03/09 Javascript
jquery+easeing实现仿flash的载入动画
2015/03/10 Javascript
关于JavaScript的变量的数据类型的判断方法
2015/08/14 Javascript
js的各种排序算法实现(总结)
2016/07/23 Javascript
jquery过滤特殊字符',防sql注入的实现方法
2016/08/17 Javascript
浅谈js对象属性 通过点(.) 和方括号([]) 的不同之处
2016/10/29 Javascript
AngularJS递归指令实现Tree View效果示例
2016/11/07 Javascript
Javascript 实现放大镜效果实例详解
2016/12/03 Javascript
浅析JavaScript中作用域和作用域链
2016/12/06 Javascript
深入理解javascript中concat方法
2016/12/12 Javascript
Vue组件开发之LeanCloud带图形校验码的短信发送功能
2017/11/07 Javascript
详解设置Webstorm 利用babel将ES6自动转码成ES5
2017/12/20 Javascript
详解vue2.0+vue-video-player实现hls播放全过程
2018/03/02 Javascript
轻量级JS Cookie插件js-cookie的使用方法
2018/03/22 Javascript
快速解决angularJS中用post方法时后台拿不到值的问题
2018/08/14 Javascript
Vue项目实现简单的权限控制管理功能
2019/07/17 Javascript
JS实现按比例缩小图片宽高
2020/08/24 Javascript
python list使用示例 list中找连续的数字
2014/01/27 Python
Python中偏函数用法示例
2018/06/07 Python
大二自我鉴定
2014/01/31 职场文书
初二生物教学反思
2014/02/03 职场文书
高中毕业生登记表自我鉴定范文
2014/03/18 职场文书
热门专业求职信
2014/05/24 职场文书
同学聚会邀请函
2015/01/30 职场文书
导师工作推荐信
2015/03/27 职场文书
读《人生的智慧》有感:闲暇是人生的精华
2019/12/25 职场文书
Python 中random 库的详细使用
2021/06/03 Python
Redis基本数据类型String常用操作命令
2022/06/01 Redis