2012-08-22 91 views
1

在urls.py文件:與HTTP URL的Django調度GET參數

url(r'^api/user_info/(?P<username>[a-zA-Z\d]+)\&', 'corresponding.view') 
url(r'^api/user_info/(?P<username>[a-zA-Z\d]+)', 'corresponding.view') 

總是會有HTTP GET參數/api/user_info/username

問題是,在corresponding.view函數中,username將評估爲「myusername?clientversion = 2.0」,而不是評估爲「myusername」和request.GET['clientversion'] = "2.0"

第一個url調用是試圖捕捉那裏的&符號,但它沒有幫助。

在此先感謝。

回答

4

參見this question;您不使用Django的URLConf訪問查詢參數。嘗試使用URL解析器處理?&字符不會導致快樂。

只需使用以下URL模式:

url(r'^api/user_info/(?P<username>\w\+)/$', 'corresponding.view') 

,並訪問clientversion查詢參數在corresponding.view()功能:

def view(request): 
    client_version = request.GET.get('clientversion') 
    ... 

或者,如果你說的應該是強制性

from django.http import Http404 

def view(request): 
    try: 
     client_version = request.GET['clientversion'] 
    except KeyError: 
     raise Http404 
+0

您的回答對我來說非常有啓發性。謝謝。然而,我意識到我的真​​正問題是純粹的愚蠢在我的一端:我的客戶端軟件請求頁面的HTTP GET參數以'&'開頭,而不是'?'...在我注意到之前花了幾個小時...只是那些日子中的一天... –