2016-12-06 8 views
0

私は答えを探して試してみましたが、それは非常に多くの試行をしましたが、ここで何か変わったことがあります。私は、AJAXを介して入って来るJSONデータを操作するいくつかの関数を私の見解で持っています。現在、私はこれらについていくつかのユニットテストをしようとしています。私のテストケースでDjangoとJSON/AJAXのテスト

私が持っている:

kwargs = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'} 
url = '/<correct_url>/upload/' 
data = { 
       "id" : p.id 
} 

c = Client() 
response = c.delete(url, data, **kwargs) 

content_unicode = response.content.decode('utf-8') 
content = json.loads(content_unicode) 

p.idは、私が使用しているモデルから来ているだけの整数です。私はその後、テストされている機能を持っている

、以下のように見えるその部品:

def delete_ajax(self, request, *args, **kwargs): 
    print (request.body) 
    body_unicode = request.body.decode('utf-8') 
    print (body_unicode) 
    body_json = json.loads(body_unicode) 

最初のprint文の利回り:

.....b"{'id': 1}" 

他の1:

{'id': 1} 

最後に、次のように4行目にエラーが表示されます。

json.decoder.JSONDecodeError: Expecting property name enclosed in double quotes: line 1 column 2 (char 1) 

ここで何が問題になりますか?正しいJSON形式が{"id": 1}であることを理解しています。これはテストケースから送信したものです。しかし途中でシングルクオートがミックスに導入され、頭が痛む。

どのような考えですか?

kwargs = {'HTTP_X_REQUESTED_WITH': 'XMLHttpRequest'} 
url = '/<correct_url>/upload/' 
data = json.dumps({ 
"id" : p.id 
}) 

c = Client() 
response = c.delete(url, data, **kwargs) 

あなたはまた、「アプリケーション/ jsonの」にContent-Typeヘッダーを設定し、あなたのcontent-typeヘッダーを確認する必要があります:あなたはClient.delete()にJSON文字列ではなく、Pythonの辞書を渡す必要が

答えて

1

それは別の話題です。

+0

ありがとうございます!私はあなたの答えの前にそれをほとんど得ましたが、あなたはまだより速かったです。コンテンツタイプのチェックは次のものです。 – xtrom0rt