Как изменить 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
, чтобы отобразить изменение в параметрах запроса.
Для получения подробной информации о реализации, вы можете обратиться к официальным документам.
Удачи!