Igo*_*lev 1 python regex django django-urls httprequest
我是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'),
)
Run Code Online (Sandbox Code Playgroud)
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中跳过它.那我该怎么办?
这个网址:
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请不要在函数名称中使用大写字母.
| 归档时间: |
|
| 查看次数: |
507 次 |
| 最近记录: |