活塞返回HTML而不是JSON

时间:2012-01-11 04:46:16

标签: python django django-piston

我正在使用Django和Piston,我创建了以下处理程序:

from piston.handler import BaseHandler
import datetime
import json

class NotificationHandler( BaseHandler ):
  allowed_methods = ('POST',)

  def create( self, request, token ):
    return json.dumps( datetime.datetime.now() )

当向这个处理程序发出请求时,我得到一个html页面:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
<head>
  <title>something</title>
  <META name="description" content="something"><META name="keywords" content="something">
</head>
<frameset rows="100%,*" border="0">
  <frame src="http://something.com/pay/notify/345345/" frameborder="0" />
  <frame frameborder="0" noresize />
</frameset>
<!-- pageok -->
<!-- 03 -->
<!-- -->
</html>

看起来它正在把这个调用变成一个框架集。 但是我希望得到类似的东西:

"2012-01-11 00:17:24"

我正在使用带有mod_wsgi的apache。 当从PyCharm IDE提供的服务器本地运行项目时,我得到了预期的json值。

我不确定为什么我会得到不同的结果,因为我使用相同的脚本来发出请求(使用相同的标题)。

什么会让Piston返回HTML页面而不是原始的json字符串?可能是标题?

2 个答案:

答案 0 :(得分:0)

检查您的Apache配置并确保调用该函数(引发像David Robinson提议的异常)。

答案 1 :(得分:0)

考虑使用以下描述的WSGI应用程序包装器:

http://code.google.com/p/modwsgi/wiki/DebuggingTechniques#Tracking_Request_and_Response

捕获请求的输入和输出。

这将允许您验证Django是否被调用,以及返回到mod_wsgi的内容,因此确定问题是否在Django中是否存在Apache缓存或其他在应用程序返回响应后导致问题的情况。