2010-03-02 43 views
1

我有一個簡單的Django視圖,它只是返回URL參數,但如果我多次使用相同的參數鍵,我似乎無法訪問它。考慮以下設置:Django使用的URL參數密鑰兩次

urls.py:

(r'^header/$',header) 

View功能:

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

模板:

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

網址:

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

響應:

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

item : 2 

如若 '項目' 條目具有的 '1,2' 或 「[ '1', '2']」 的值?注意完整的GET返回。我如何獲得這兩個值?

回答

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

它返回列表中的多個值。在後端,您可以檢查變量是否爲列表,然後相應地處理這些情況。看起來好像有一些邏輯可以返回分配給某個鍵的最後一個值,如果將它強制轉換爲字符串,就像你正在做的那樣。

+0

有沒有一種機制來從模板做到這一點? – kzh 2010-03-02 16:27:53

+0

@kzh - 你不想在模板中做到這一點,你想在視圖中做到這一點。 – 2010-03-02 16:29:18

+0

@Dom - 我通常不會,但我很好奇Django是否有這個機制,就這些。 – kzh 2010-03-02 16:45:26