2011-09-13 7 views
0

私はDjango 1.3 + APIに関するプロジェクトを持っています。 これはGETハンドラのコードです:Djangoピストンのメッセージエンコードの問題

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) 

    ... 

取得要求は通常、このような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サーバのconfファイルにこの行を追加しましたAllowEncodedSlashes On

この問題の解決にお役立てください。

答えて