Django活塞消息编码问题

时间:2011-09-13 13:16:58

标签: django django-piston

我有一个关于API的Django 1.3 +活塞的项目。 这是GET处理程序的代码:

listen_resource = Resource( ListenHandler )

urlpatterns = patterns('', 
  url( r'^listen/(?P<expression>.*)$', listen_resource ),
)


class ListenHandler(BaseHandler):   
    def read( self, request, expression ):            

        retval = {}
        print expression

        try:
            j_data = simplejson.loads(expression) 

    ...

Get请求通常是一个JSON格式的字符串,如下所示:

/api/listen/%7B%22act%22:%221%22,%22login%22:%22Terminal_001%22,%22passw%22:%2211223344%22,%22body%22:%22%7B%5C%22date%5C%22:%5C%222011-09-14%2016:34:26%5C%22,%5C%22link%5C%22:%5C%220%5C%22%7D%22%7D

我打印时:

print expression

在开发服务器上由Eclipse IDE运行项目时,结果是:

{"act":"1","login":"Terminal_001","passw":"11223344","body":"{\"date\":\"2011-09-13 16:59:31\",\"link\":\"0\"}"}

我可以用这个Json格式的字符串创建对象:

j_data = simplejson.loads(expression) 

但是在Apache server + mod_wsgi上运行项目时,结果是:

{"act":"1","login":"Terminal_001","passw":"11223344","body":"{/"date/":/"2011-09-13 17:46:42/",/"link/":/"0/"}"}

反斜杠替换为斜杠,操作simplejson.loads(expression)引发异常:

<type 'exceptions.ValueError'>
('Expecting , delimiter: line 1 column 64 (char 64)',)

在Apache服务器配置文件中,我添加了这一行AllowEncodedSlashes On

请帮助解决这个问题。

1 个答案:

答案 0 :(得分:0)

我通过更新apache来解决它,问题出现在这个bug中 https://issues.apache.org/bugzilla/show_bug.cgi?id=35256