Я хочу обновить значение значения тела json в сообщении Request в моем django API (также используя rest framework), прямо сейчас я пытаюсь сделать это с помощью настраиваемое промежуточное ПО. Это мое промежуточное ПО.
def CustomMiddleware(get_response):
def middleware(request):
print('request: ', request, ' type: ', type(request), ' vars: ', vars(request))
print('request: ', request.body)
body = json.loads(request.body)
body['attr'] = str(body['attr'])+'abc'
request.body = json.dumps(body)
response = get_response(request)
return response
return middleware
Итак, когда я делаю POST-запрос к своему API, я получаю следующую ошибку:
File "/path/models_masking/mask_middleware.py", line 37, in middleware
request.body = json.dumps(request_updated)
AttributeError: can't set attribute
Я прочитал и обнаружил, что request
объект неизменен, поэтому я не уверен, смогу ли я скопировать, чтобы запросить объект, изменить копию, а затем отправить ее в функцию get_response
, или, может быть, есть лучший подход для этого, может быть, декоратор для моих классов APIView.
Может ли кто-нибудь помочь мне с элегантным решением для этого?
EDIT
Значение 'attr' + 'ab c' равно новое значение, которое используется во многих частях кодовой базы, моя основная проблема заключается в том, что я не хочу изменять это значение во многих функциях, которые находятся во многих конечных точках запроса, поэтому моей первой идеей было обновить значение запросов на автоматическое изменение значения attr во всех запросах, вместо обновления каждого из них.
Возможно, это новый вопрос, но может ли кто-нибудь дать лучшее решение моей проблемы , Буду признателен.