2012-08-06 5 views
6

templatetags/custom_filters.py에서 내 맞춤 Django 필터 youtube_embed_url을 정의했습니다. 그것은 유튜브 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 페이지에서이 필터를 사용합니다.

enter image description here

어떤 생각 방법 :

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

내가 브라우저에서 링크 페이지를 볼 때 나는 문자열로 HTML 코드를 볼, 그러나 다음은 link_page.html의 관련 부분입니다 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' }}