我的request.session中有以下QueryDict对象。
<QueryDict: {u'category': [u'44', u'46'], u'cityID': [u'null'], u'countryCode': [u''], u'mapCenterLng': [u'2.291300800000009'], u'mapZoom': [u'12'], u'mapCenterLat': [u'47.10983460000001'], u'price_range': [u''], u'textbox': [u'']}>
在模板中尝试使用以下方法获取类别数组:
{{request.session.lastrequest.category}}
但是这只给出了数组的最后一个值。 我怎样才能得到整个阵列?
由于
月
答案 0 :(得分:19)
你做不到。您需要调用.getlist('category')
,但不能使用模板中的参数调用方法。
答案 1 :(得分:0)
我也需要访问QueryDict,所以我添加了一个过滤器,它可以满足我的需求。
无论您在何处注册了应用过滤器:
#/templatetags/app_filters.py
from django import template
register = template.Library()
# Calls .getlist() on a querydict
# Use: querydict | get_list {{ querydict|get_list:"itemToGet" }}
@register.filter
def get_list(querydict, itemToGet ):
return querydict.getlist(itemToGet)
在模板中:
{% load app_filters %}
{% for each in form.data|get_list:"itemYouAreInterestedIn" %}
{{each}}
{% endfor %}
答案 2 :(得分:0)
您可以使用QueryDict
的方法lists()
来做到这一点:
{% for k, v in request.session.lastrequest.lists %}{% if k == 'category' %}{{ v }}{% endif %}{% endfor %}
尽管您需要遍历整个字典,但它只会输入一次if
语句。 v
始终是列表。