首页 文章

Django模板遍历request.GET中的列表

提问于
浏览
2

我今天的问题是我要在请求中保留我的视图中的一些url参数 .

想想以下网址:

http://localhost:8000/some-url/?myargument=hello&myargument=world&myargument=whatever

注意到我的网址中的每个参数都有相同的密钥(“myargument”)?记在脑子里

在Django 1.6中,如果我在模板中执行 {{ request.GET }} ,我会得到类似的结果:

<QueryDict: {u'myargument': [u'hello', u'world', u'whatever']}>

为了保留下一个提交中的参数,我想通过使用键值对在 <form> 中创建隐藏字段来迭代 request.GET 字典,我可以使用以下代码执行此操作:

{% for key, value in request.GET.items %}
    <input type="hidden" name="{{ key }}" value="{{ value }}">
{% endfor %}

它适用于单个值,但不适用于我的情况,因为我的列表中包含名为“myargument”的键的值 .

显然,我尝试的第一件事是通过在值为列表时执行 {% for v in value %} 来迭代值,但这只打印出"value"列表中的最后一项,在本例中为"whatever" .

有人有同样的问题吗?我该如何解决?谢谢

1 回答

  • 4

    在视图中:

    mydict = dict(request.GET._iterlists())
    

    发送并迭代模板:

    <p>
    {{ mydict }}
    </p>
    
    <p>
    {% for k,v in mydict.iteritems %}
        {{ k }}:{% for x in v %}{{ x }},{% endfor %} <br>
    {% endfor %}
    </p>
    

相关问题