2023년 1월 5일 7:15 오후


import markdown
from django import template
from django.utils.safestring import mark_safe

register = template.Library()


@register.filter
def youtube(value):
    v = value
    result = value
    while "<https://youtu.be/" in v:
        start_slice = v.find("<https://youtu.be/")
        end_slice = v.find("><br/><iframe src="https://www.youtube.com/embed/" in v:
        start_slice = v.find("<https://youtu.be/")
        end_slice = v.find("" title="Youtube" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>")
        result = result.replace(v[start_slice:end_slice+1], v[start_slice:end_slice+1]+"<br/>" +
                                f'<iframe src="https://www.youtube.com/embed/{v[start_slice+18:end_slice]}" title="Youtube" frameborder="0" allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture" allowfullscreen></iframe>')

        v = v[end_slice+1:]

    return result


@register.filter
def mark(value):
    youtube(value)
    extensions = ["nl2br", "fenced_code"]
    return mark_safe(markdown.markdown(youtube(value), extensions=extensions))

오...
참고로 highlight.js 라는 라이브러리를 사용했다

https://highlightjs.org/