具有单页应用程序的真实 URL



我在我的一个项目中使用了反应路由器,所以 react 是前端库,路由由 react router 管理,后端视图在 django 中,API 在 django rest 中

所以我正在浏览反应路由器文档,我遇到了这个:-

配置服务器 您的服务器必须准备好处理实际 URL。当应用程序首次在/加载时,它可能会工作,但是当用户四处导航然后在/accounts/23 点击刷新时,您的 Web 服务器将收到对/accounts/23 的请求。您将需要它来处理该 URL,并在响应中包含您的 JavaScript 应用程序。

我想知道这将如何与 django 视图一起工作。

在开发服务器上,您只需为不以 api/static/开头的所有内容设置一条路由,以返回基本app.html文件。例

class AppHTMLView(View):
    def get(self, request):
        fn = os.path.join(settings.BASE_DIR, "app", "app.html")
        with open(fn, 'r') as fh:
            return HttpResponse(fh.read())

在生产服务器上,您可以相应地配置 Nginx。像这样的东西

...
location / {
    root /var/www/example.com/static_files/;
    try_files '' /app.html =404;
}

但这绝不是 React 特有的,而是所有单页应用程序通用的。

最新更新