Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Django自定义筛选器查找模板变量_Django_Django Templates - Fatal编程技术网

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 ... 解决方案是将标记改为模板标记,而不是过滤器-过滤器应该是原子的,

我在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 ...

解决方案是将标记改为模板标记,而不是过滤器-过滤器应该是原子的,独立于上下文。像这样的方法应该会奏效:

# 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来说更加灵活。