使用@register.simple_tag,我定义了自定义标签test()
,它有两个参数,如下所示:
from django.template import Library
register = Library()
@register.simple_tag
def test(first_name="John", last_name="Smith"):
return first_name + " " + last_name
然后,我将"Anna"
和"Miller"
传递给test()
,并在Django模板中使用两个as
参数,如下所示:
{% test "Anna" as f_name "Miller" as l_name %}
{{ f_name }} {{ l_name }}
但是,下面有一个错误:
django.template.exceptions.TemplateSyntaxError:“test”收到的位置参数太多
实际上,如果我只将"Anna"
传递给test()
,并带有一个as
参数,则不会出现错误,如下所示:
{% test "Anna" as f_name %}
{{ f_name }}
输出:
Anna Smith
并且,如果我将"Anna"
和"Miller"
传递给test()
而不带as
参数,则不会出现错误,如下所示:
{% test "Anna" "Miller" %}
输出:
Anna Miller
那么,如何在Django Template中将多个参数传递给一个带有多个as
参数的模板标签?
1条答案
按热度按时间niwlg2el1#
as
参数可以根据Simple tags中的以下文档存储模板标记test()
的返回值:可以将标记结果存储在模板变量中,而不是直接输出它。这是通过使用
as
参数后跟变量名来完成的。这样做可以让您自己在您认为合适的地方输出内容:根据我的实验,在Django Template中,不可能将多个参数传递给具有多个
as
参数的模板标签。但是,您可以在Django Template中向一个模板标签传递多个参数,其中只有一个
as
参数,如下所示:输出: