阻止标签无效

| 我写了块标记,当我尝试在模板中引起它时,出现错误:   无效的代码块:\'endyoutube \' 我的标签
from django import template

register = template.Library()

@register.tag
def youtube(parser, token):
    link = parser.parse((\'endyoutube\', ))
    iframe = \"\"\"<iframe width=\"640\" height=\"510\" src=\"%s\" frameborder=\"0\" 
        allowfullscreen></iframe>\"\"\" % link
    return YoutubeNode(iframe)

class YoutubeNode(template.Node):
    def __init__(self, iframe):
        self.iframe = iframe

    def render(self, context):
        video = self.iframe.render(context)
        return video
模板
{% load customtags %}
{% youtube %}
    http://www.youtube.com/watch?v=yZt1qXnOOqU
{% endyoutube %}
我的标签有什么问题?我该如何解决?     
已邀请:
        我知道了。第一个错误-我没有使用delete_first_token(),它是从令牌中删除结束标记,这是导致错误的原因。第二个错误-这不可能将已解析的数据插入函数中的字符串中,因为它不是字符串,而是类'django.template.debug.DebugNodeList \'。该对象要求render()方法为Node类实例中引起的字符串。最后一个-嵌入和观看的youtube链接有所不同。 可行标签
class YoutubeNode(template.Node):
    def __init__(self, parsed_link):
        self.parsed_link = parsed_link

    def render(self, context):
        del_it = re.compile(\'&amp;feature=related\')
        replace_it = re.compile(\'watch\\?v=\')
        link = self.parsed_link.render(context)
        link = del_it.sub(\'\', link)
        link = replace_it.sub(\'embed/\', link)
        video = \"\"\"<p><iframe width=\"550\" height=\"438\" src=\"%s\" 
        frameborder=\"0\" allowfullscreen></iframe></p>\"\"\" % link
        return video

@register.tag
def youtube(parser, token):    
    parsed_link = parser.parse((\'endyoutube\', ))
    # first token it\'s closing tag. delete_first_token just delete it - del    self.tokens[0];)
    parser.delete_first_token()
    return YoutubeNode(parsed_link)
    

要回复问题请先登录注册