tam*_*are 10 django django-templates
说,我有两个对象列表,foo和bar.在Django模板中,循环时foo,有一个计数器跟踪当前索引/迭代,计数器用于访问bar.这里的问题是我不认为Django模板系统支持使用变量索引访问列表.真的吗?如果是这样,问题是否有任何解决方法(除了用硬编码索引重复相同的html /模板代码)?
代码演示:
{% for x in foo %}
<span>{{ x.name }} vs. {{ bar.{{ forloop.counter0 }}.name }}</span>
{% endfor %}
Run Code Online (Sandbox Code Playgroud)
Django模板不喜欢 {{ bar.{{ forloop.counter0 }}.name }}
注意:我使用的是Django 1.4
是的,你无法解析变量名.绝对要非常努力地将这个逻辑放在视图中.
但有5%的时间,我确实发现这极其有限,有时需要在模板作者控制之外的视图/更改中需要太多逻辑.我接受了一些个人定制,允许在视图中进行变量赋值以及简单的变量分辨率.
尽管如此,使用模板引擎"所有查找在一个"系统(索引,属性,键)中构建模板标签非常简单.
from django.template import Variable, VariableDoesNotExist
@register.assignment_tag()
def resolve(lookup, target):
try:
return Variable(lookup).resolve(target)
except VariableDoesNotExist:
return None
{% resolve some_list some_index as value %}
{% resolve some_dict some_dict_key as value %}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
10036 次 |
| 最近记录: |