无法在 Django 模板标签、Twitter Bootstrap 中嵌入 YouTube 链接

Posted

技术标签:

【中文标题】无法在 Django 模板标签、Twitter Bootstrap 中嵌入 YouTube 链接【英文标题】:Can't Embed YouTube Link Within Django Template Tag, Twitter Bootstrap 【发布时间】:2012-06-10 21:53:05 【问题描述】:

我目前正在尝试通过 Django 表单在 Twitter Bootstrap 布局中嵌入用户提交的 YouTube 链接。

视频的空间出现了,源代码反映了正确的信息和链接,但是视频和播放器都没有出现。我还使用此链接中的“flex-video”类作为响应式布局http://poslavsky.com/blog/2012/04/01/responsive-video-in-twitter-bootstrap/,但是当该类更改为另一个名称(例如“video”)时它也不起作用。

这是代码:

<div class="row">
<div class="span12">
    <span>story.author</span><br>

    <span>story.zip_code</span><br>

    <span>story.date</span><br>

    <p>story.copy</p>
    <div class="image">
        % if story.pic %
        <img src=" story.pic.url "  />
        %  endif %
    </div>
    <div class="flex-video">
            % if story.video %
            <p> <iframe   src=" story.video" frameborder="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen></iframe>
                </p>
        % endif %
        </div>
</div>

非常感谢任何见解。

【问题讨论】:

您确定这是一个有效的 YouTube 网址吗?复制渲染页面上src属性的内容,在新标签页中查看。 【参考方案1】:

我猜story.video 给 Youtube 视频网址提供了类似于 http://youtube.com/watch?v=ASO_ypdnsQ 的内容,这是直接的 youtube 网址,而不是嵌入网址。

同一视频的嵌入网址与直接网址不同,例如 http://youtube.com/embed/....

我创建了一个自定义模板标签,方法如下。

import urlparse
...

@register.inclusion_tag('video_embed.html', takes_context=True)
def youtube_embed(context, url):
    url_data = urlparse.urlparse(url)
    query = urlparse.parse_qs(url_data.query)
    video_id = query["v"][0]
    context['embed_url'] = ('http://youtube.com/embed/%s' % video_id)
    return context

然后,在模板中加载标签,并传递 youtube url。它会从普通 url 中提供嵌入 url。

【讨论】:

以上是关于无法在 Django 模板标签、Twitter Bootstrap 中嵌入 YouTube 链接的主要内容,如果未能解决你的问题,请参考以下文章

Django 应用程序无法正确加载 Twitter bootstrap 3 模式

无法在 Django 模板文件的 for 循环中使用条件标签

显示某些标签 django 模板

将 twitter 引导程序与 Django 表单一起使用

使用 django 模板标签修改 url

Django 从嵌套应用程序加载模板标签无法正常工作