Django模板 - 获取多个GET参数列表

时间:2015-12-02 18:19:52

标签: django django-templates

我有一个包含多个GET参数(同名)的网址 - mycompany.com/?a=1&a=2

当我在django模板中时:

{{ request.GET }}

我明白了:

<QueryDict: {'a': ['1', '2']}> 

当我在django模板中时:

{{ request.GET.a }}

我明白了:

2

当我尝试循环时:

{% for a in request.GET.a %}
    {{ a }}
{% endfor %}

我明白了:

2

如何在django模板中将多个GET参数表示为列表? THX!

4 个答案:

答案 0 :(得分:1)

模板过滤器:

[应用程序/ templatetags /的 exampletag 的.py]

from django import template

register = template.Library()

@register.filter
def get_item(dictionary, key):
    return dict(dictionary).get(key)

<强>模板:

{% load exampletag %}

{{ request.GET|get_item:'a' }}

How to: Custom template tags and filters

答案 1 :(得分:1)

模板过滤器:

from django import template

register = template.Library()

@register.filter
def get_list(dictionary, key):
    return dictionary.getlist(key)

<强>模板:

{% for a in request.GET|get_list:'a' %}
    {{ a }}
{% endfor %}

答案 2 :(得分:0)

有点笨,但可以完成工作:

{%for list_of_elements in request.GET.lists%}
    {%for element in list_of_elements.1%}
        {{ element }}
    {%endfor%}
{%endfor%}

或者如果您只想从查询中获取特定列表:

{%for list_of_elements in request.GET.lists %}
    {%if list_of_elements.0 == "a"%}
        {%for element in list_of_elements.1%}
            {{ element }}
        {%endfor%}
    {%endif%}
{%endfor%}

答案 3 :(得分:0)

{% for name, values in request.GET.lists %}
    {% if name == 'a' %}{{ values|join:", " }}{% endif %}
{% endfor %}

{% for name, values in request.GET.lists %}
    {% if name == 'a' %} 
        {% for value in values %}{{ value }}{% endfor %}
    {% endif %}
{% endfor %}