无法在 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 模式