2012-08-06 20 views
6

私は独自のDjangoフィルタyoutube_embed_urlをtemplatetags/custom_filters.pyに定義しました。それはYoutube URLを受け取り、ビデオの埋め込みコードである文字列を返します。 templatetags/custom_filters.pyのためのコードは以下の通りです:Django:Youtube URLを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コードを参照してください。

enter image description here

どのように任意のアイデアyoutube_embed_urlメソッドの結果を文字列ではなくHTMLコードとして解釈させますか?事前に感謝、みんな!

+0

私たちは本当の答えを待っている間、http://stackoverflow.com/questions/4848611/django-rendering-a-template-variable-をご覧くださいas-html – kush

+0

@Arman、便利なコードをありがとう。 –

+0

これはクールなDjangoスニペットを作るでしょう... – nicorellius

答えて

11

グッドオール 'safe filter

{{ link.url|youtube_embed_url|safe }} 
3

django-embed-videoも使用できます。

使い方は非常に似ています:

{% load embed_video_tags %} 

{{ link.url|embed:'560x315' }} 
関連する問題