Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/91.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 为什么Django中的模板标记不';不行?_Python_Html_Django_Templates - Fatal编程技术网

Python 为什么Django中的模板标记不';不行?

Python 为什么Django中的模板标记不';不行?,python,html,django,templates,Python,Html,Django,Templates,在我的文件中,我执行以下操作: {% gen_aws "hello" %} .py文件很好…我把所有的东西都包括进去了。我有其他模板“过滤器”在那里,工作良好。但后来我在那个文件中添加了这个,而这个模板标签不起作用 你对“不起作用”的描述不太准确(确切地说,它不存在)。但是我猜你会出错,因为找不到标签 声明中明确指出,您的应用程序中需要一个“templatetags”模块,例如,需要一个子模块,如“mytags”。然后,您必须在要使用这些标记的每个模板中包含这些标记。您可以使用{%loadmy

在我的文件中,我执行以下操作:

{% gen_aws "hello" %}
.py文件很好…我把所有的东西都包括进去了。我有其他模板“过滤器”在那里,工作良好。但后来我在那个文件中添加了这个,而这个模板标签不起作用

你对“不起作用”的描述不太准确(确切地说,它不存在)。但是我猜你会出错,因为找不到标签

声明中明确指出,您的应用程序中需要一个“templatetags”模块,例如,需要一个子模块,如“mytags”。然后,您必须在要使用这些标记的每个模板中包含这些标记。您可以使用
{%loadmytags%}
来实现这一点

“mytags”模块包含您的“gen_aws”标签


编辑:发生错误“gen_aws()正好接受1个参数(2个给定参数)”,因为普通标记可以以非常定制的方式解析其参数。因此,它们得到参数“parser”和“token”。在您的情况下,所谓的Django应该足够了,然后自动为您解析参数并将其作为Python值传递。因此,只需将
@register.tag
替换为
@register.simple\u tag

“no attribute'must\u first”错误的另一个可能原因是您忘记了从类中的
django.template.Node
继承。(因为这几乎是这个短语的唯一谷歌结果,我想我应该在这里添加这个,为下一个人节省几分钟。)

@TIMEX:那么你到底有什么问题呢?gen_aws()在我将其更改为gen_aws(a,s)时正好取1个参数(给定2个),我得到这个错误:“str”object没有属性“must_first”
#I want to add "goodbye" to every word passed to this tag.
@register.tag(name="gen_aws")
def gen_aws(s):
    return s + "goodbye"