2012-08-22 57 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参数以'&'开头,而不是'?'...在我注意到之前花了几个小时...只是那些日子中的一天... –