2012-01-11 69 views
1

我与Django和活塞工作HTML,我创建了以下处理程序:活塞返回,而不是JSON

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" 

我使用的Apache与mod_wsgi的。 当从PyCharm IDE提供的服务器本地运行项目时,我得到预期的json值。

不知道为什么我得到不同的结果,因为我使用的是相同的脚本发出请求(具有相同的标题)。

什么会让活塞返回一个HTML页面,而不是原始的json字符串?它可能是一个头部?

+2

它看起来并不像它打包的电话 - 如果是的话,你的日期时间仍然会在HTML中的某处。相反,它看起来像你的创建函数永远不会被调用(你可以通过在create方法中引发一个Exception来确认)。你确定请求到达处理程序吗? – 2012-01-11 05:47:47

+0

我只知道,如果我写的服务地址为http:// /通知它工作得很好,但是如果我把HTTP:// /通知将返回所有的HTML代码,而不是进入处理程序。我还测试了它作为GET方法,如果我在浏览器中放入相同的URL,在查看网页源代码时会得到相同的结果,如果点击框架中的链接,我会得到我期望的结果(因为该URL是使用IP)。它看起来像域掩码是导致问题的原因。任何想法如何可以工作?我正在使用GoDaddy.com – JPs 2012-01-11 23:34:14

+0

我终于发现问题只能通过域转发来完成。我正在使用url掩码选项来添加frameset的html包装器。如果我删除这个选项,我可以从读取(GET)处理程序得到正确的响应。当使用POST时,它仍然会删除我发送的数据,而我正在获取GET。将不得不研究,但是,这不是一个蟒蛇/活塞问题。 – JPs 2012-01-12 04:21:49

回答

0

检查你的Apache配置,并确保该函数被调用(引发异常等中提出由大卫·罗宾逊)。