我在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