如何在Django模板中将多个参数传递给一个带有多个“as”参数的模板标签?

huus2vyu  于 2023-05-19  发布在  Go
关注(0)|答案(1)|浏览(242)

使用@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参数的模板标签?

niwlg2el

niwlg2el1#

as参数可以根据Simple tags中的以下文档存储模板标记test()的返回值:
可以将标记结果存储在模板变量中,而不是直接输出它。这是通过使用as参数后跟变量名来完成的。这样做可以让您自己在您认为合适的地方输出内容:
根据我的实验,在Django Template中,不可能将多个参数传递给具有多个as参数的模板标签。
但是,您可以在Django Template中向一个模板标签传递多个参数,其中只有一个as参数,如下所示:

{% test "Anna" "Miller" as full_name %}
{{ full_name }}

输出:

Anna Miller

相关问题