我在templatetags/custom_filters.py中定义了我自定义的Django过滤器youtube_embed_url。它需要一个Youtube网址并返回嵌入视频代码的字符串。对于templatetags/custom_filters.py的代码如下:Django:将YouTube网址转换为HTML嵌入代码
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代码,而不是字符串?在此先感谢,伙计们!
在我们等待一个真正的答案,请看看http://stackoverflow.com/questions/4848611/django-rendering-a-template-variable- as-html – kush 2012-08-06 23:06:48
@Arman,感谢您的有用代码。 – 2013-07-22 21:09:29
这将使一个很酷的Django片段... – nicorellius 2014-11-07 21:01:31