在使用 Django 开发 API 的时候难免会遇到一些特殊的请求方式, 例如:
- 请求
/user/index.html
需要重定向到/user/static/index.html
- 请求
/user/js/base.json
需要重定向到/user/static/js/base.js
在路由配置中我们可以使用 url("user/.*\.(html|json)$", Redirect.as_view())
进行路由转发,
这个时候你可能有点疑惑,
Redirect
的导入问题,
因为这个是继承自 RedirectView
的自定义类。
Redirect
class Redirect(RedirectView):
def get(self, request, *args, **kwargs):
self.url = 'user/static' + request.path[4:]
return super().get(request, *args, **kwargs)
其实你只需要修改 self.url
的规则即可实现你的重定向路由,
在父类中 get(self, request, *args, **kwargs)
方式是将 def get_redirect_url(self, *args, **kwargs)
的路径构成的响应对象返回,
所以你需要指定 self.url
属性的时候就可以达到你想要的效果,
当然你可以根据你的实际情况进行各种个性化判断。