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

Igo*_*lev 1 python regex django django-urls httprequest

我是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'),
    )
Run Code Online (Sandbox Code Playgroud)

和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])
Run Code Online (Sandbox Code Playgroud)

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

gre*_*reg 6

这个网址:

portal/client_api.ashx?client=SAPRA&key=1234234&func=status&code=99999
Run Code Online (Sandbox Code Playgroud)

有两个部分,路径:

portal/client_api.ashx
Run Code Online (Sandbox Code Playgroud)

和查询字符串:

client=SAPRA&key=1234234&func=status&code=99999
Run Code Online (Sandbox Code Playgroud)

被解析成request.GET.

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

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

当然,我们不能使用GET参数来解析URL 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'),
)
Run Code Online (Sandbox Code Playgroud)

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