【问题标题】:Django: converting Youtube URL to HTML embed codeDjango:将 Youtube URL 转换为 HTML 嵌入代码
【发布时间】:2012-08-03 22:46:10
【问题描述】:

我在 templatetags/custom_filters.py 中定义了我的自定义 Django 过滤器 youtube_embed_url。它需要一个 Youtube 网址并返回作为视频嵌入代码的字符串。 templatetags/custom_filters.py 的代码如下:

from django import template
from django.conf import settings
register = template.Library()
import re

@register.filter(name='youtube_embed_url')
# converts youtube URL into embed HTML
# value is url
def youtube_embed_url(value):
    match = re.search(r'^(http|https)\:\/\/www\.youtube\.com\/watch\?v\=(\w*)(\&(.*))?$', value)
    if match:
        embed_url = 'http://www.youtube.com/embed/%s' %(match.group(2))
        res = "<iframe width=\"560\" height=\"315\" src=\"%s\" frameborder=\"0\" allowfullscreen></iframe>" %(embed_url)
        return res
    return ''

youtube_embed_url.is_safe = True

然后我在link_page.html 页面中使用这个过滤器。以下是 link_page.html 的相关部分:

<div>
{{ link.url|youtube_embed_url }}
</div>

但是,当我在浏览器中查看链接页面时,我将 HTML 代码视为字符串:

知道如何将 youtube_embed_url 方法的结果解释为 HTML 代码,而不是字符串吗?提前谢谢各位!

【问题讨论】:

  • 在我们等待真正的答案时,请查看stackoverflow.com/questions/4848611/…
  • @Arman,感谢您提供有用的代码。
  • 这将是一个很酷的 Django sn-p...
  • 我还应该注意,一些 YouTube 网址有破折号和下划线,因此您的正则表达式可能需要调整。

标签: django youtube embed django-templates


【解决方案1】:

好啊safe filter

{{ link.url|youtube_embed_url|safe }}

【讨论】:

    【解决方案2】:

    您也可以使用django-embed-video

    用法很相似:

    {% load embed_video_tags %}
    
    {{ link.url|embed:'560x315' }}
    

    【讨论】:

      猜你喜欢
      • 2013-03-27
      • 2015-03-02
      • 2012-01-02
      • 2018-08-13
      • 2012-11-14
      • 2014-03-03
      • 2020-02-16
      • 2018-07-03
      • 2012-01-22
      相关资源
      最近更新 更多