我该如何处理查询“?”在我的django urls.py中

时间:2013-12-19 14:49:41

标签: python regex django httprequest django-urls

我是Django的新手。我要写一个moke。我的服务器将查看特定地址。 像这样:

portal/client_api.ashx?client=SAPRA&key=1234234&func=status&code=99999

我写道:

urls.py

from django.conf.urls import patterns, url
from rt_moke import views
urlpatterns = patterns('',
    url(r'code=(?P<code_id>\w+)/', views.Sapata, name='sapata'),
    )

和views.py

from django.http import HttpResponse
status = {u"99999": u'{"code": "99999","status": "undelivered"}',\
     u"88888": u'{"code": "88888","status": "delivered"}',\
     }
def Sapata(request, code_id):
    return HttpResponse(status[code_id])

当我请求p ortal/client_api.ashx?client=SAPRA&key=1234234&func=status&code=99999而没有?标记时 - 它有效,而?则没有。我明白,它是查询字符串,Django在regexp中跳过它。那我该怎么办?

1 个答案:

答案 0 :(得分:6)

此网址:

portal/client_api.ashx?client=SAPRA&key=1234234&func=status&code=99999

有两部分,路径:

portal/client_api.ashx

和查询字符串:

client=SAPRA&key=1234234&func=status&code=99999

被解析为request.GET

views.py中,您应该从请求中获取参数(例如request.GET中的简单dict),例如:

def test(request):
    code = request.GET.get('code') # here we try to get 'code' key, if not return None
    ...

当然,我们无法使用GET参数来解析urls.py中的网址。您的urls.py应如下所示:

from django.conf.urls import patterns, url
from rt_moke import views

urlpatterns = patterns('',
    url(r'^portal/client_api\.ashx$', views.Sapata, name='sapata'),
)

P.S。请不要在函数名称中使用大写字母。