2015-07-20 102 views
0

我想將此代碼轉換爲更可繼承的代碼以避免編碼。考慮我的代碼是簡單而簡單的答案是需要的。如何通過django變量訪問對象屬性?

{{ entity.name }} 
{{ entity.description }} 

我要轉換爲這樣的代碼:

{% for attribute in attributes %} 
{{ entity ??? }} == entity.get_attr(attribute) 
{% end for %} 

什麼是它有效的語法?

+2

你需要寫一個customm模板標籤/過濾器。 –

+0

https://djangosnippets.org/snippets/411/ – Anentropic

回答

2

帶有過濾器的最簡單的例子:

# templatetags.ry 
from django import template 


register = template.Library() 

@register.filter 
def get_attr(object, name): 
    return getattr(object, name, '') 

您的模板:

{% load templatetags %} 


{% for attribute in attributes %} 
    {{ entity|get_attr:attribute }} 
{% end for %} 
+0

不可能做實體[名稱]? – Chameleon

+0

如果你使用[jinja2](http://jinja.pocoo.org/docs/dev/templates/#variables),這是可能的。但在* jinga1 *中,您必須使用自定義過濾器。 –