假设我有一个具有以下上下文的 django 模板:
data1 = "this is data1"
data2 = "this is data2"
data_name = "data2"
现在我知道了data_name的值(假设它是"data2"),是否可以用它来访问变量data2 ?
为了让我的意图更清楚,这就是你可以用 Python 完成的方式
>>> a = 1
>>> b = 2
>>> name = 'a'
>>> locals()[name]
1
>>> name = 'b'
>>> locals()[name]
2
请您参考如下方法:
与 builtin template filters, tags , 不可能。你应该define custom tags去做。
例子:
from django import template
register = template.Library()
@register.simple_tag(takes_context=True)
def get_by_name(context, name):
return context[name]
示例用法(假设标签在 APP_DIR/templatetags/name.py 中定义):
>>> from django.template import Template, Context
>>> t = Template('''
... {% load name %} {# Don't forget to load #}
... {% get_by_name data_name %}
... ''')
>>> output = t.render(Context({
... 'data1': 'this is data1',
... 'data2': 'this is data2',
... 'data_name': 'data2',
... }))
>>> print(output)
this is data2
