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

前言:

  给自己的网站中加入视频资源,有两种方法,一种是用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站视频,进入视频播放页)

3.django网页中的效果图

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>

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.效果图

新闻详情页

 首页

 4.总结

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

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏PPV课数据科学社区

学好 Python 的 11 个优秀资源

Python是目前最流行、最易学最强大的编程语言之一(学习Python的五大理由),无论你是新手还是老鸟,无论是用于机器学习还是web开发(Pinterest就...

3754
来自专栏Java学习网

成为专业程序员的 6 个技巧

成为专业程序员的 6 个技巧 1.在你责怪别人之前,先检查自己的代码 先想一想自己的假设和其他人的假设。来自不同供应商的工具可能内置不同的假设,即便是相同的供应...

3206
来自专栏飞雪无情的博客

微信小程序--不是你想的那样

2017年1月9日凌晨,微信[如约]发布了小程序,这个[如约]是真正的如约,0点刚过就放出来了,可不是我们以为的上班时间8点。早上8点起来,已经被刷爆了朋友圈、...

1153
来自专栏我是攻城师

5个可以教你编程的游戏

4526
来自专栏Android 开发者

[译] 带有情景感知这一新特性的活动识别 Transition API 面向全体开发者开放

2124
来自专栏华章科技

这11个免费学习的网站,个个堪称神器,不收后悔!

导读:神奇的网站有很多,今天推荐11个和学习有关的,而且都是免费的,希望对大家有所帮助。

1222
来自专栏编程

编程语言遇上超级英雄,谁才是真的本命?

每一种编程语言都有自己的独特风格和个性,这种个性的张扬往往会吸引一群人,变成一个社区的狂欢。如果把编程语言比作超级英雄,你觉得哪些英雄是你心中的本命呢?笔者根据...

27510
来自专栏SDNLAB

揭开全球第一颗SDN交换芯片的神秘面纱

编者按:全球第一颗SDN交换芯片一直被一层神秘的面纱包围着,小编近日采访了一下盛科网络的张卫峰张总,为您揭开全球第一颗SDN交换芯片神秘的面纱,以下是采访内容。...

3725
来自专栏Flutter入门到实战

重构并没有你想象的那么简单

  上个月,有个以前的同事问我:“你在的时候,为什么不把原来的系统都重做了,我们明明有实力啊”。

1123
来自专栏用户2442861的专栏

JAVA月薪两万的一些讨论

作者:匿名用户 链接:https://www.zhihu.com/question/39890405/answer/83676977 来源:知乎 著作权归...

3601

扫码关注云+社区

领取腾讯云代金券