Django Piston 内容类型始终为 Null

0 投票
1 回答
569 浏览
提问于 2025-04-16 02:33

我一周前还在用django-piston,但最近我无法调用任何网络服务。下面是一个简单的例子。我有一个叫'test'的服务,如果有内容类型就返回'yes',如果内容类型为空就返回'no'。我这样做是因为当我进行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错误。

提前谢谢你。

1 个回答

0

我觉得在 HttpRequest 对象里没有一个叫 data 的属性。你可能想找的是 raw_post_data

撰写回答