Синтаксический анализ Django HttpResponse в python

#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)