【问题标题】:Django: How do I get an array from a QueryDict in a template?Django:如何从模板中的 QueryDict 获取数组?
【发布时间】:2010-02-02 20:03:04
【问题描述】:

我的 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}}

但这只给了我数组的最后一个值。 如何获取整个数组?

谢谢

七月

【问题讨论】:

    标签: django arrays templates


    【解决方案1】:

    你不能。需要调用.getlist('category'),但是不能调用模板中带参数的方法。

    【讨论】:

    • 哇,回复快。那我就另找办法了。谢谢!
    【解决方案2】:

    我也需要访问 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 %}
    

    【讨论】:

    【解决方案3】:

    你可以使用QueryDict的方法lists()

    {% for k, v in request.session.lastrequest.lists %}{% if k == 'category' %}{{ v }}{% endif %}{% endfor %}
    

    虽然你需要遍历整个字典,但它只会输入一次if语句。 v 始终是一个列表。

    【讨论】:

      猜你喜欢
      • 2012-04-19
      • 1970-01-01
      • 2011-11-11
      • 2011-02-10
      • 1970-01-01
      • 2018-09-23
      • 2022-01-16
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多