У меня есть проект на Django 1.3 + поршень для API.
Это код обработчика 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 + 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
, пожалуйста, помогите решить эту проблему.