一周前我有 django-piston 工作,但最近我无法调用任何网络服务。下面是一个简单的例子。我有一个“测试”服务,如果有内容类型,则返回“是”,如果内容类型为空,则返回“否”。我这样做是因为当我执行 POST 并尝试通过“data = request.data”解析我的参数时出现 HTTP 500 错误。我假设我不能做 request.data 因为内容类型为空?
所以,这是我的简单网络服务:
class testHandler(BaseHandler):
def create(self, request):
if request.content_type:
return 'yes'
else:
data = request.data
return 'no'
这是 urls.py 文件:
class CsrfExemptResource( Resource ):
def __init__( self, handler, authentication = None ):
super( CsrfExemptResource, self ).__init__( handler, authentication )
self.csrf_exempt = getattr( self.handler, 'csrf_exempt', True )
controller_handler = CsrfExemptResource(controllerHandler)
test_handler = CsrfExemptResource(testHandler)
urlpatterns = patterns('',
url(r'^controller/', controller_handler),
url(r'^test/', test_handler),
)
最后是我从 python 终端运行来调用服务的代码:
params = urllib.urlencode({'value':'someValue'})
req = urllib2.Request("http://127.0.0.1/cindy/api/test/", params)
result = urllib2.urlopen(req).read()
所以'result'总是返回no,如果我将'request.data'行放在服务中,我会收到HTTP 500错误。
提前致谢。