Django自定义筛选器查找模板变量
我在Django中有一个自定义模板过滤器,我可以访问模板过滤器中的其他模板变量吗Django自定义筛选器查找模板变量,django,django-templates,Django,Django Templates,我在Django中有一个自定义模板过滤器,我可以访问模板过滤器中的其他模板变量吗 {{lookup_dict}} {% for a in my_list %} {{a|my_filter:1}} {% endfor %} @register.filter def my_filter(obj, val): # I need to access "lookup_dict" here return ... 解决方案是将标记改为模板标记,而不是过滤器-过滤器应该是原子的,
{{lookup_dict}}
{% for a in my_list %}
{{a|my_filter:1}}
{% endfor %}
@register.filter
def my_filter(obj, val):
# I need to access "lookup_dict" here
return ...
解决方案是将标记改为模板标记,而不是过滤器-过滤器应该是原子的,独立于上下文。像这样的方法应该会奏效:
# takes_context allows you access to the outer template context
@register.simple_tag(takes_context=True)
def my_tag(context, obj, val):
lookup_dict = context['lookup_obj']
# Do something with lookup_dict, obj, and val
# Return something that will be rendered in the template
return ...
然后在模板中:
{% for a in my_list %}
{% my_tag a 1 %}
{% endfor %}
请注意,现在这是一个标记(
{%
)而不是一个变量({
)。我想答案可能是否定的,也可能是难以置信的困难。如果您遇到许多类似的问题,我建议您考虑使用Jinja2模板,这对于args和kwargs来说更加灵活。