Python django模板-如何动态访问变量?

Python django模板-如何动态访问变量?,python,django,django-templates,Python,Django,Django Templates,假设我有一个具有以下上下文的django模板: data1 = "this is data1" data2 = "this is data2" data_name = "data2" 现在我知道了data\u name(假设它是“data2”)的值,是否可以使用它访问变量data2 为了让我的意图更清楚,下面是使用Python的方法 >>> a = 1 >>> b = 2 >>> name = 'a' >>> locals

假设我有一个具有以下上下文的django模板:

data1 = "this is data1"
data2 = "this is data2"
data_name = "data2"
现在我知道了
data\u name
(假设它是
“data2”
)的值,是否可以使用它访问变量
data2

为了让我的意图更清楚,下面是使用Python的方法

>>> a = 1
>>> b = 2
>>> name = 'a'
>>> locals()[name]
1
>>> name = 'b'
>>> locals()[name]
2
有了它,这是不可能的。你应该做这件事

例如:

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
中定义):


此自定义筛选器将允许您获取给定上下文变量的给定属性。在应用程序文件夹中,创建一个名为templatetags 并将此内容插入templatetags/custom_tags.py

from django import template

register = template.Library()

@register.filter()
def get_key(value, arg):
    if arg in value:
        return value[arg]
    else:
        return ''
下面是一个在处理表单(上下文中有一个名为“form”的变量)的模板中使用该方法的示例。这将获取上下文变量“form.errors”的属性“username”


+1这是一个很好的问题,在我看来,没有办法做到这一点,但让我们等待。很好地使用了templatetags使用的内部变量,
context
。回答得很好!我相信这就是解决办法。
from django import template

register = template.Library()

@register.filter()
def get_key(value, arg):
    if arg in value:
        return value[arg]
    else:
        return ''
{% load custom_tags %}

{{ form.errors | get_key:"username" }}