2015-05-31 2 views
1

Итак, для одного из моих приложений Django метод возвращает объект HttpResponse.Извлечение JSON из HttpResponse из представления Django

json_str = json.dumps(json_dict) 
return HttpResponse(json_str, content_type="application/json") 

В моем тестовом модуле для приложения (tests.py), я смоделировал запрос GET

def setUp(self): 
    c = Client() 
    response = c.get('/url/to/view/') 

Из того, что я прочитал в документации тестирования Django, ответ будет объектом Response, который аналогичен, но не точно такой же, как объект HttpResponse. Итак, как я могу получить строку json из ответа?

ответ

0

Вы можете получить JSON ответ, как это:

import json 

response = json.loads(c.get('/url/to/view/').content) 
0

Вы должны взглянуть на JsonResponse, который является подклассом HTTPResponse.

От клиента тестирования вы можете получить фактическую строку ответа с содержанием атрибута:

>>> from django.test import Client 
>>> c = Client() 
>>> response = c.post('/login/', {'username': 'john', 'password': 'smith'}) 
>>> response.status_code 
200 
>>> response = c.get('/customer/details/') 
>>> response.content 
'<!DOCTYPE html...' 

Если реакция происходит с содержать JSon строку будет содержать JSON.

Инструменты для тестирования также включают полезные инструменты для работы с JSON, такие как assertJSONEqual.

Если вы хотите, чтобы преобразовать строку ответа на фактический питон словари, вы можете сделать это с

import json 

response = json.loads(c.get('/myjsonview/').content)