2014-02-07 61 views
2

Django模板我今天的问题是,我已经保存了一些url参数,这些参数在请求中显示在我的视图中。Django模板遍历request.GET

想想以下网址:

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']}>

要保留在未来的论点提出我要遍历request.GET字典创建该<form>与键值对里面的隐藏字段,我可以用这个代码做到这一点:

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

它的工作原理与单值,但不能在我的CA因为我有一个名为“myargument”的键值列表。

很显然,我尝试的第一件事是当值为列表时,通过执行{% for v in value %}来迭代该值,但这只打印出“值”列表中的最后一项,在这种情况下为“无论”。

任何人都有同样的问题?我该如何解决它?由于

+0

它是如何不工作,当你有一个列表?当然你没有得到一个错误... –

+1

你可以使用['getlist'](https://docs.djangoproject.com/en/dev/ref/request-response/#django.http.QueryDict.getlist) – karthikr

+0

@ Karthikr的评论就是答案。 –

回答

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>