如何使用变量获取 Django 模板中另一个变量的属性
How to use variable to get attributes of another another variable in Django templates
我正在尝试使用指定的列和行填充 Django 模板中的 CSS 网格。据我所知,我需要在 Django 模板中做一些类似于“嵌套变量”的事情来实现我正在寻找的东西。我试过这个,但它不起作用:
{% for parent_row in parent_rows %}
{{ parent_row }}
<div>p1</div>
<div>p2</div>
{% for child_row in children_rows %}
<div> {{ child_row}} </div>
{% for guy in guys %}
<input type=”text” value=”{{guy}}.{{child_row}}”></input>
{% endfor %}
{% endfor %}
{% endfor %}
{{guy}}.{{child_row}} 我试过的一些类似变体都不起作用。我设法通过将整个 HTML 打开,然后在不同的行上遍历每个人来获得我正在寻找的结果,例如我可以使用 guy.name 来获得所需的值到每一行,但这意味着很多重复。
parent_rows 可能看起来像这样,例如:
“names”, “contact_information”, “hobbies”
例如,children_rows 可能看起来像这样:
“forename”, “family_name”, “phone_number”, “mail”, “favourite_hobby”
两个人的记录是这样的(为了便于说明,它们都是相同的):
“forename”: “Mike”
“family_name”: “McMediocre”
“phone_number”: “123”
“mail”: “mike@mediocre.com”
“favourite_hobby”: “tennis”
我正在尝试将网格填充为如下所示:
col1
col2
col3
names
p1
p2
forename
Mike
Mike
family_name
McMediocre
McMediocre
contact_information
p1
p2
phone_number
123
123
mail
mike@mediocre.com
mike@mediocre.com
hobbies
p1
p2
favourite_hobby
tennis
tennis
编辑:从 找到了我的问题的答案。接受的答案对我的情况也很有用。
从 找到了我的问题的答案。
已接受的答案(自定义模板过滤器)对我的情况也很有用。我所做的是:
在 MyApp
下创建了目录 templatetags
在该目录
创建了一个名为 customtemplatetag.py 的文件
从链接 post:
复制粘贴片段
从 django 导入模板
注册 = template.Library()
@register.filter
def get_obj_attr(obj, 属性):
return getattr(obj, attr)
已将 {% load mytemplatetag %} 添加到我的模板
在模板中使用了{{guy|get_obj_attr:child_row}}
我正在尝试使用指定的列和行填充 Django 模板中的 CSS 网格。据我所知,我需要在 Django 模板中做一些类似于“嵌套变量”的事情来实现我正在寻找的东西。我试过这个,但它不起作用:
{% for parent_row in parent_rows %}
{{ parent_row }}
<div>p1</div>
<div>p2</div>
{% for child_row in children_rows %}
<div> {{ child_row}} </div>
{% for guy in guys %}
<input type=”text” value=”{{guy}}.{{child_row}}”></input>
{% endfor %}
{% endfor %}
{% endfor %}
{{guy}}.{{child_row}} 我试过的一些类似变体都不起作用。我设法通过将整个 HTML 打开,然后在不同的行上遍历每个人来获得我正在寻找的结果,例如我可以使用 guy.name 来获得所需的值到每一行,但这意味着很多重复。
parent_rows 可能看起来像这样,例如:
“names”, “contact_information”, “hobbies”
例如,children_rows 可能看起来像这样:
“forename”, “family_name”, “phone_number”, “mail”, “favourite_hobby”
两个人的记录是这样的(为了便于说明,它们都是相同的):
“forename”: “Mike”
“family_name”: “McMediocre”
“phone_number”: “123”
“mail”: “mike@mediocre.com”
“favourite_hobby”: “tennis”
我正在尝试将网格填充为如下所示:
col1 | col2 | col3 |
---|---|---|
names | p1 | p2 |
forename | Mike | Mike |
family_name | McMediocre | McMediocre |
contact_information | p1 | p2 |
phone_number | 123 | 123 |
mike@mediocre.com | mike@mediocre.com | |
hobbies | p1 | p2 |
favourite_hobby | tennis | tennis |
编辑:从
从
已接受的答案(自定义模板过滤器)对我的情况也很有用。我所做的是:
在 MyApp
下创建了目录 templatetags在该目录
创建了一个名为 customtemplatetag.py 的文件从链接 post:
复制粘贴片段从 django 导入模板
注册 = template.Library()
@register.filter def get_obj_attr(obj, 属性): return getattr(obj, attr)
已将 {% load mytemplatetag %} 添加到我的模板
在模板中使用了{{guy|get_obj_attr:child_row}}