访问request.get中的列表

时间:2019-02-14 14:33:39

标签: django django-templates

我在检查Django模板中的request.GET参数时遇到困难。

django.template.context_processors.request已启用,因此我可以访问request.GET

在我的网址中使用以下GET参数:?floor=1&floor=2&building=1,我正在尝试执行以下操作:

{% if 1 in request.GET.floor %}IN{% else %}OUT{% endif %}

我希望它返回IN。但是,将显示OUT

更详细地潜水时:

{{ request.GET }}
{{ request.GET.floor }}
{{ request.GET.urlencode }}

返回以下信息:

<QueryDict: {'building': ['1'], 'floor': [1, 2]}>
2
building=1&floor=1&floor=2

因此,看来我在“ {floor”中的[1, 2]列表已减少到最后一个元素('2')。 检查完整列表的最佳方法是什么?

1 个答案:

答案 0 :(得分:1)

创建过滤器。

templatetags/getlist.py

from django import template

register = template.Library()

@register.filter(name="getlist")
def getlist(request_dictionary, key):
    return request_dictionary.getlist(key) if request_dictionary else []

在您的模板中:

{% load getlist %}
{% if 1 in request.GET|getlist:'floor' %}IN{% else %}OUT{% endif %}