上下文:
我使用Django作为后端,使用Vue / Vuetify作为单独的前端。我使用Apache服务前端,而Django仅用于客户端/服务器设置中的api调用。
我已经设置了WSGIScriptAlias来通过[base_url] / api而不是网站根目录进行服务。我部署了该项目,并且按预期从/ api提供了Django请求/响应。
在我的开发环境中,我正在运行2个并发开发服务器。我正在为前端项目运行webpack开发服务器(端口10000),在单独的端口(10001)上运行django runserver,以在开发时为我的请求提供服务。
在webpack中,我设置了以下内容:
devserver:{
hot: true,port: 10000
historyApiFallback: true,host: 'localhost',//django api
proxy:{
'/api': {
target: 'http://localhost:10001',pathRewrite: {'^/api' : ''},secure: false
}
}
}
这里的想法是,每当我从http://localhost:10000/api请求某项内容时,它将自动重定向到localhost:10001,它模仿了生产实例的工作方式,因为生产中断了请求的/ api部分。>
问题:
当我运行dev webpack和django服务器时,我可以成功请求localhost:10000 / api并获得django响应,但是我注意到当我尝试访问http://localhost:10000/api/admin时,应该调出django admin页面,Django重定向到http://localhost:10000/admin。
我正在寻找WSGIScriptAlias以外的方法(因为除非在我设置了一个本地apache / virtualhost,否则我无法在我的dev实例中使用该方法,否则在修改django时会遇到刷新问题)。>
有什么办法可以做以下其中一项?
A)生产环境中没有WSGIScriptAlias / Django生产环境中删除请求的/ api部分(这将使url模式在所有环境中保持一致)
B)可能会在Django设置或运行服务器中将基本URL设置为包含/ api,以便在没有/ api的情况下不会尝试重定向
C)也许是webpack中我在devserver设置中缺少的东西?
全面披露: 还有一个问题要问类似的问题(How to set base URL in Django),但又有所不同,因为看起来好像他们在谈论生产,我在谈论开发实例。他们的解决方案还使用了我无法使用的WSGIScriptAlias。