Skip to main content
 首页 » 编程设计

python之django 模板之如何动态访问变量

2024年08月28日29findumars

假设我有一个具有以下上下文的 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