3

我尝试在 Django 1.6 中制作自己的分配模板标签(编辑:我也尝试了 1.5.5 没有成功)但我无法让它做任何事情。

templatetags/getattribute.py我有:

from django import template
import logging

register = template.Library()
logger = logging.getLogger('wwwcid.website.debug_console')

#@register.assignment_tag
def mytag(context, context_variable):
    raise template.TemplateSyntaxError("buuuuuuuuuuuuuuus")
    logger.debug("!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!")
    print "teeeeeeeeeeeeeeeeeeeest"
    return 'tpppppppppppppppppppppeee'
register.assignment_tag(mytag, takes_context=True)

在我的模板profile.html中,我有:

{% extends "website/base.html" %}
{% load getattribute %}
{% mytag "user.email" as vari %}
{{ vari }}
{% block content %}
<p> Rest of the page. </p>
{% endblock content %}

但是这个标签不起作用。没有引发错误(即使我自己提出),没有日志输出,没有打印,没有返回,什么都没有。

即使我注册了不带takes_context = True的标签,也只能@register.assignment_tag说它不起作用。我在这里做错了什么?谢谢你的帮助!

4

1 回答 1

7

好的,我应该粘贴代码,因为我的应用程序中确实有它。我编辑了上面的 profile.html 部分以反映实际情况。问题是标签和变量只在{% block foo %}和之间执行{% endblock foo %}。因此,使用以下profile.html模板可以正常工作:

{% extends "website/base.html" %}
{% load getattribute %}
{% block content %}
{% mytag "user.email" as vari %}
{{ vari }}
<p> Rest of the page. </p>
{% endblock content %}
于 2013-12-02T08:41:43.650 回答