Как изменить url-параметры (query_string) в django rest framework перед обработкой запроса?

Потому что мне нужна совместимость со старым клиентом. Например, когда я получаю запрос http://0.0.0.0:8000/api/exercises/?pk=13, я хочу изменить параметры так http://0.0.0.0:8000/api/exercises/?id=13.

Другие: http://0.0.0.0:8000/api/exercises/?displayName=ABC. изменить на http://0.0.0.0:8000/api/exercises/?display_name=ABC

http://0.0.0.0:8000/api/exercises/?target=1,2 изменить на http://0.0.0.0:8000/api/exercises/?target=1&target=2

Есть ли место, где я могу написать код для обработки запроса? Я пытаюсь изменить request.environ['QUERY_STRING'] и request.META['QUERY_STRING'] в middleware, но не получается.

Спасибо.

Для этого вы можете использовать функцию django redirect. Для этого в ваших старых представлениях просто перенаправьте его на ваши новые представления.

Простой пример -

def my_old_view(request,pk):
    ...
    return redirect(f'/api/excersise/?id={pk}')

Таким образом, если кто-то введет ваш старый URL, он будет перенаправлен на новый без каких-либо проблем.

Я считаю, что вы можете воспользоваться RedirectView и переопределить метод get_redirect_url, чтобы отобразить изменение в параметрах запроса.

Для получения подробной информации о реализации, вы можете обратиться к официальным документам.

Удачи!

Вернуться на верх