6

カスタム Django フィルター youtube_embed_url を templatetags/custom_filters.py で定義しました。Youtube の URL を受け取り、ビデオの埋め込みコードである文字列を返します。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 コードとして解釈する方法はありますか? よろしくお願いします!

4

2 に答える 2

13

古き良きsafeフィルター

{{ link.url|youtube_embed_url|safe }}
于 2012-08-06T23:06:38.587 に答える
3

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

使い方はよく似ています:

{% load embed_video_tags %}

{{ link.url|embed:'560x315' }}
于 2013-08-12T10:33:47.643 に答える