【发布时间】:2019-02-14 14:33:38
【问题描述】:
我在检查 Django 模板中的 request.GET 参数时遇到了困难。
django.template.context_processors.request 已启用,因此我可以访问request.GET。
在我的 URL 中使用以下 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
所以看起来我的“地板”[1, 2] 列表已减少到最后一个元素(“2”)。
查看完整列表的最佳方法是什么?
【问题讨论】:
-
使用
request.GET.getlist('floor')。另请参阅stackoverflow.com/questions/11190070/django-getlist。 -
@Bobort:在视图中,有什么方法可以直接在模板中访问?我当然可以将
getlist('whatever')传递给上下文,但我有十几个这样的项目。 -
哦,我明白了。您可以创建一个名为
getlist的模板标签/过滤器,它将键作为参数。您当前的设置不使用与获取列表相关的任何内容。