为什么Django中的模板标签不起作用?

TIM*_*MEX 3 html python django templates

{% gen_aws "hello" %}
Run Code Online (Sandbox Code Playgroud)

在我的文件中,我这样做:

#I want to add "goodbye" to every word passed to this tag.
@register.tag(name="gen_aws")
def gen_aws(s):
    return s + "goodbye"
Run Code Online (Sandbox Code Playgroud)

.py文件很好......我包括一切都很好.我有其他模板"过滤器"在那里工作正常.但后来我在那个文件中添加了这个,这个模板标签不起作用.

And*_*Dog 9

您对"不起作用"的描述不是很准确(确切地说它不存在).但我猜你得到一个错误,因为找不到标签.

文件明确指出,你需要一个"templatetags"模块中您的应用程序,包含"mytags"的子模块,例如.然后,您必须在要使用它们的每个模板中包含这些标记.你可以这样做{% load mytags %}.

然后"mytags"模块包含您的"gen_aws"标签.

编辑:错误"gen_aws()正好采用1个参数(2给定)"因为普通标签可以以非常自定义的方式解析其参数.因此,他们得到参数"parser"和"token".在你的情况下,一个所谓的简单标记就足够了 - 然后Django自动为你解析参数并将它们作为Python值传递.因此,只需更换@register.tag@register.simple_tag.


kqr*_*kqr 5

"no attribute 'must_be_first'"错误的另一个可能原因是您忘记继承django.template.Node您的课程.(因为这几乎就是这句话的谷歌结果,我想我会在这里添加这个,为下一个人节省几分钟.)