我在检查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')。
检查完整列表的最佳方法是什么?
答案 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 %}