如何在处理请求前修改djangorest框架中的url参数(query_string)?

mspsb9vt  于 2023-02-10  发布在  Go
关注(0)|答案(2)|浏览(118)

因为我需要和旧的客户端兼容,我使用django-rest-framework和django_filter,例如,当我收到一个请求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'],但是没有效果。
谢谢。

wgxvkvu9

wgxvkvu91#

我相信您可以利用RedirectView并覆盖get_redirect_url方法来Map查询参数中的更改。
具体实施细节可参考官方文档。

64jmpszr

64jmpszr2#

你可以使用django的redirect函数来实现这个功能,在你的旧视图中只需要将它重定向到你的新视图。
一个简单的例子-

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

因此,如果有人输入您的旧网址,它将被重定向到一个新的没有任何问题。

相关问题