1

私は次のようなdjango解析関数を持っています:

def parse_org(request):
    try:
       org = simplejson.loads(request.POST['org'])
    except Exception:
       traceback.print_exc()
    print org

デコードエラーが発生しました。

クライアント側では、スクリプト版(コードは後半に貼り付けます)は問題なく動作しますが、最近、負荷テストを行うためのPython版を書きたいので、リクエストを送信するPythonクライアントスクリプトに次のコードを記述します。

data_dict = {}
org = ["UCSD", "MIT"]
data_dict["org"] = org
req = urllib2.Request(request_url, urllib.urlencode(data_dict), headers)
response = urllib2.urlopen(req, timeout = 5)

次に、django サイトの解析コードで解析エラーが発生します。私は正しいjavascriptバージョンと間違ったpythonクライアントを比較します.唯一の違いは一重引用符と二重引用符です.django側で間違って解析された入力は次のとおりです:

POST:<QueryDict: {u'org': [u"['UCSD', 'MIT']"], ....

正しい入力は次のとおりです。

POST:<QueryDict: {u'org': [u'["UCSD","MIT"]'], ....

参考までに、javascript 側は次のようになります (django は組織を配列として正しく解析できます)。

var org = [];
org.push("UCSD")
org.push("MIT")
var data = {"org":  JSON.stringify(org), ...
           }
$.post(url, data, function(data){
    callback(data);
});

よく検索しましたが、python クライアントが機能しないのに javascript クライアントは機能する理由がまだわかりません。urllib の urlencode と関係がありますか? そして、なぜそこに一重引用符と二重引用符の違いがあるのですか?

どうもありがとう!

4

0 に答える 0