Django URL参数键使用了两次

时间:2010-03-02 16:19:57

标签: django django-templates

我有一个简单的Django视图,只返回URL参数,但如果我多次使用相同的参数键,我似乎无法访问它。请考虑以下设置:

urls.py:

(r'^header/$',header)

查看功能:

def header(request)
    return render_to_response('header.html',locals(),mimetype='text/plain')

模板:

{{ request.GET }}
{% for key,val in request.GET %}
{{ key }} : {{ val }}
{% endfor %}

URL:

  • http://mysite/header/?item=1&item=2

响应:

<QueryDict: {u'item': [u'1', u'2']}>

item : 2

'item'条目的值是'1,2'还是'['1','2']?注意完整的GET返回的内容。我如何获得这两个值?

2 个答案:

答案 0 :(得分:5)

查看用于保存GET / POST属性的QueryDict的文档。

具体做法是:

  

QueryDict是一个类似字典的类,用于处理同一个键的多个值。这是必要的,因为某些HTML表单元素(尤其是<select multiple="multiple">)会为同一个键传递多个值。

您可能想要使用QueryDict.lists()

q = QueryDict('a=1&a=2&a=3')
q.lists()
[(u'a', [u'1', u'2', u'3'])]

答案 1 :(得分:1)

它返回列表中的多个值。在后端,您可以检查变量是否是列表,然后相应地处理案例。看起来有一些逻辑可以返回分配给键的最后一个值,如果你将它强制转换为像你一样的字符串。