我是Django的新手。我要写一个moke。我的服务器将查看特定地址。 像这样:
portal/client_api.ashx?client=SAPRA&key=1234234&func=status&code=99999
我写道:
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'),
)
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中跳过它。那我该怎么办?
答案 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。请不要在函数名称中使用大写字母。