#python #django
#python #django
Вопрос:
У меня есть функция getCode
, которая вызывается из ajax и возвращает HttpResponse(json.dumps({'code': 2}))
. У меня есть один случай, когда эта функция вызывается изнутри другой функции Python, чтобы придерживаться DRY. Я пытаюсь получить доступ к HttpResponse в if
инструкции в этой другой функции следующим образом:
x = getCode(request)
if x['code'] == 2:
# do stuff
Как мне проанализировать объект HttpResponse в Python, чтобы я мог получить доступ к данным внутри как dict?
Ответ №1:
На самом деле не очень хорошо и правильно иметь накладные расходы на создание HttpResponse
и для вызова представления из другой функции python. Здесь проблема с дизайном и структурой кода.
Извлеките логику, которая создает данные в представлении, в отдельную функцию:
def my_view(request):
data = get_data()
return HttpResponse(json.dumps(data), mimetype='application/json')
Затем вызовите функцию напрямую, а не представление:
x = get_data()
if x['code'] == 2:
...
Таким образом, вам не нужно будет сначала сбрасывать данные JSON
, чтобы HttpResponse
снова загружать содержимое ответа в структуру данных python.
Надеюсь, это имеет смысл для вас.
Ответ №2:
Его диктует доступ к нему следующим образом:
if x['code'] == 2:
Ответ №3:
Сначала получите запрос.
x = getCode(request)
Преобразуйте ответ в строку.
string_data = r.getresponse().read().decode("utf-8")
Преобразуйте строку в dict.
dict_data = json.loads(string_data)