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

Javascript 具有单页应用程序的真实URL?,javascript,django,reactjs,Javascript,Django,Reactjs,我在我的一个项目中使用了react路由器,所以react是前端库,路由由react路由器管理,后端视图在django中,API在django rest中 所以我在浏览react路由器文档时发现:- 配置服务器 您的服务器必须准备好处理真实的URL。当应用程序第一次加载到/accounts时,它可能会工作,但当用户四处导航,然后点击/accounts/23刷新时,您的web服务器将收到对/accounts/23的请求。您需要它来处理该URL,并在响应中包含JavaScript应用程序** 我想知道

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

所以我在浏览react路由器文档时发现:-

配置服务器 您的服务器必须准备好处理真实的URL。当应用程序第一次加载到/accounts时,它可能会工作,但当用户四处导航,然后点击/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;
}

但这并不是特定的反应方式,而是所有单页应用程序的共同点。

您好,这是一个相当主观的答案(这就是为什么我添加了一条评论而不是答案),但是我认为,除非您愿意咬紧牙关创建一个完整的单页应用程序,否则您不应该遵循这条道路。既然您在django中有后端视图,那么我建议您在客户端路由中使用哈希路由。我在关于redux的帖子中对此发表了相当广泛的意见:(查看我对HashHistory和BrowserHistory的评论)是的,这应该是所有单页应用程序的常见问题,我将编辑问题标题,nginx one是我认为最好的解决方案