[英]How to access an attribute of an object using a variable in django template?
如何使用变量访问对象的属性? 我有这样的事情:
{% for inscrito in inscritos %}
{% for field in list_fields_inscrito %}
{{inscrito.field}} //here is the problem
{% endfor %}
{% endfor %}
例如 Inscrito 有: inscrito.id、inscrito.Name 和 inscrito.Adress,我只想打印 inscrito.id 和 inscrito.Name 因为 id 和 Name 在 list_fields_inscrito 中。
有人知道这是怎么做的吗?
您可以为此编写模板过滤器:
myapp/templatetags/myapp_tags.py
from django import template
register = template.Library()
@register.filter
def get_obj_attr(obj, attr):
return getattr(obj, attr)
然后在模板中,您可以像这样使用它:
{% load myapp_tags %}
{% for inscrito in inscritos %}
{% for field in list_fields_inscrito %}
{{ inscrito|get_obj_attr:field }}
{% endfor %}
{% endfor %}
您可以阅读有关编写自定义模板标签的更多信息。
所选答案不包括您需要访问非字符串属性的情况。
如果您尝试访问不是字符串的属性,则必须使用以下代码:
from django import template
register = template.Library()
@register.filter
def get_obj_attr(obj, attr):
return obj[attr]
为此,在您的应用程序文件夹中创建一个名为 templatetags 的文件夹,然后使用您想要的任何名称创建一个 python 文件并将上面的代码粘贴到其中。
在您的模板中,使用{% load YOUR_FILE_NAME %}
全新的过滤器,确保将 YOUR_FILE_NAME 更改为您的实际文件名。
现在,在您的模板上,您可以使用以下代码访问对象属性:
{{ PUT_THE_NAME_OF_YOUR_OBJECT_HERE|get_obj_attr:PUT_THE_ATTRIBUTE_YOU_WANT_TO_ACCESS_HERE }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.