Как я могу обрабатывать данные POST в промежуточном программном обеспечении django?

#django

#django

Вопрос:

У меня есть промежуточное программное обеспечение Django для обработки запроса POST.

 class MyMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, req):
        response = self.get_response(req)

        # want to do something with 'r.body',
        # but it is not able to be read

        return response
  

Поскольку тело запроса уже прочитано get_response , я не могу прочитать его снова в промежуточном программном обеспечении.

Пробовал copy.copy() , но безуспешно, поскольку скопированный поток ссылается на тот же объект, что и исходный. copy.deepcopy() вызывает исключение.

Как я могу обрабатывать данные POST в промежуточном программном обеспечении?

Я хочу обрабатывать все запросы, поэтому реализация логики в каждом представлении не идеальна.

Комментарии:

1. req.body или req.POST ?

Ответ №1:

Найдено решение

 class MyMiddleware:
    def __init__(self, get_response):
        self.get_response = get_response

    def __call__(self, req):
        req.body  # just add this line BEFORE get_response

        response = self.get_response(req)

        return response
  

Комментарии:

1. Это не работает для меня.